Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Warscheinlichkeit & random (https://www.delphipraxis.net/31059-warscheinlichkeit-random.html)

theomega 3. Okt 2004 17:35


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

jfheins 3. Okt 2004 17:44

Re: Warscheinlichkeit & random
 
Zitat:

Zitat von theomega
chance von 1:X auf true besteht (x soll variabel sein).

1/X ? Nicht sowas wie X oder 1-X ?
(Wozu 1/X ??)

Stanlay Hanks 3. Okt 2004 17:45

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:
  Case RandomRange(1,6) of
    2..6 : ShowMessage('False');
    1    : ShowMessage('True');
  end;
Man liest sich, Stanlay :hi:

Edit: Beispiel hinzugefügt

Nicolai1234 3. Okt 2004 17:48

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:
randomize;
reinschreiben!
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 :(

JasonDX 3. Okt 2004 17:50

Re: Warscheinlichkeit & random
 
was auch ginge (für statistiker, die die ws in 0,... angeben):
Delphi-Quellcode:
(random > Wahrscheinlichkeit)
und für die 1: x-angabe
Delphi-Quellcode:
(random(x) = 0)
@Nicolai
so würds reichen:
Delphi-Quellcode:
result := random(x)+1 = 1;

theomega 3. Okt 2004 17:52

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?

alcaeus 3. Okt 2004 17:55

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

theomega 3. Okt 2004 18:00

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:
if (random<0,333333) then result:=true
else result:=false;
würde das dann passen?

Gruß
TO

alcaeus 3. Okt 2004 18:02

Re: Warscheinlichkeit & random
 
Hi theomega,

AFAIK sollte das allen Regeln der Statistik entsprechen :zwinker:

Greetz
alcaeus

jfheins 3. Okt 2004 18:06

Re: Warscheinlichkeit & random
 
Also, folgende Funktion gibt dir mit der übergebenen Wahrscheinlichket (in Prozent) TRUE zurück:
Delphi-Quellcode:
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;
Nicht vergessen: randomize vorher aufrufen ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz