![]() |
Warscheinlichkeit & random
Hallo Leute,
ich bräuchte eine Funktion die mir entweder true oder false zurückgibt und dabei eine chance von 1:x auf true besteht (x soll variabel sein). Ich steh gerade echt auf dem Schlauch, keine Ahnung wie ich das mit random mache. Gruß und Danke TO |
Re: Warscheinlichkeit & random
Zitat:
(Wozu 1/X ??) |
Re: Warscheinlichkeit & random
Hi. Nimm RandomRange aus der Unit Math
Wenn die Zahl 1 ist, wird das Ergebnis True, ansonsten False. Also in etwa so:
Delphi-Quellcode:
Man liest sich, Stanlay :hi:
Case RandomRange(1,6) of
2..6 : ShowMessage('False'); 1 : ShowMessage('True'); end; Edit: Beispiel hinzugefügt |
Re: Warscheinlichkeit & random
x steht für das x bei 1:x
Es muss vorher der "Zufallsgenerator" gestartet werden! Am besten in DeinForm.create noch
Delphi-Quellcode:
reinschreiben!
randomize;
So sieht die function aus:
Delphi-Quellcode:
function(x:integer): boolean;
begin if random(x)+1 = 1 then result := true; end; EDIT: zu spät :( |
Re: Warscheinlichkeit & random
was auch ginge (für statistiker, die die ws in 0,... angeben):
Delphi-Quellcode:
und für die 1: x-angabe
(random > Wahrscheinlichkeit)
Delphi-Quellcode:
@Nicolai
(random(x) = 0)
so würds reichen:
Delphi-Quellcode:
result := random(x)+1 = 1;
|
Re: Warscheinlichkeit & random
oki, soweit war ich auch schon, ihr habt auch recht, eigentlich will ich nicht 1:x sonder ich weiß p und damit ist q=1-p (aus dem MAtheunterricht) p+q=1 womit ja p kleiner 1 sein muß und damit eigentlich sich random nicht gut, oder?
|
Re: Warscheinlichkeit & random
Hi theomega,
Random ohne Parameter gibt dir einen Wert zwischen 0 und 1 zurück. Das sollte für deine Zwecke eigentlich passen. Greetz alcaeus |
Re: Warscheinlichkeit & random
nehmen wir mal an p=0,333333 und q=0,666666666
wenn ich jetzt eine zufallszahl zwischen 0 und 1 erstelle und dann über eine if-abfrage machen
Delphi-Quellcode:
würde das dann passen?
if (random<0,333333) then result:=true
else result:=false; Gruß TO |
Re: Warscheinlichkeit & random
Hi theomega,
AFAIK sollte das allen Regeln der Statistik entsprechen :zwinker: Greetz alcaeus |
Re: Warscheinlichkeit & random
Also, folgende Funktion gibt dir mit der übergebenen Wahrscheinlichket (in Prozent) TRUE zurück:
Delphi-Quellcode:
Nicht vergessen: randomize vorher aufrufen ...
function (x: Byte): Boolean;
begin Result := FALSE; if (x < 0) OR (x > 100) then exit; // Damit mit der übergebeben Wahrscheinlichkeit FALSE zurückgegeben wird, // folgendes auskomentieren: // x := 100 - x; Result := (Random < (x / 100)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz