Seite 1 von 1
rand wirklich zufall?
Verfasst: 08.12.2006 07:22
von langeweile
ich habe ein script mit einem rand befehl
zeile mit dem rand befehl ist:
vielleicht ist es ja einbildung, aber ich habe das gefühl, das einige zahlen viel öfter kommen als andere.
ist das möglich oder spielt mir da meine wahrnehmung einen streich?
Re: rand wirklich zufall?
Verfasst: 08.12.2006 07:26
von Michael Zacher
langeweile hat geschrieben:ist das möglich oder spielt mir da meine wahrnehmung einen streich?
Deine Wahrnehmung spielt Dir einen Streich.
Verfasst: 08.12.2006 11:22
von gn#36
Wenn du ganz sicher gehen willst kannst du es ja ausprobieren.
Bau ein Skript dass z.B. Zahlen von 0 bis 100 generiert und das Ergebnis in einem Array zählt. Wenn du das dann 100000 mal ausführst und am Ende den Inhalt des Arrays ausgeben lässt sollte es einigermaßen gleich verteilt sein.
Ach ja, es sollte vor dem Aufruf von rand() srand() benutzt werden um jedes mal andere Zufallszahlen zu bekommen wenn eine ältere PHP Version als 4.2.0 vorliegt!
Code: Alles auswählen
srand ((double)microtime()*1000000);
for($i=0;$i<=100;$i++)
{
$array[$i]=0;
}
for($i=0;$i<=100000;$i++)
{
$array[rand(0,100)]++;
}
for($i=0;$i<=100;$i++)
{
echo "$i: " . $array[$i] . "<br>";
}
Re: rand wirklich zufall?
Verfasst: 08.12.2006 14:20
von Pyramide
langeweile hat geschrieben:aber ich habe das gefühl, das einige zahlen viel öfter kommen als andere.
Naja und? Wenn du würfelst kannst du auch dreimal hintereinander die gleiche Zahl würfeln, obwohl es nur 6 Zahlen gibt.
Wenn du nicht möchtest, daß zwei Zahlen hintereinander erscheinen, dann solltest du ein Array mit den Zahlen von 1 bis 100 nehmen, dieses durchwürfeln und dann die ersten x Stellen nehmen.
Verfasst: 08.12.2006 14:49
von PhilippK
Also wenn du es genau wissen willst: zufällig ist rand() nicht - es ist allein auf Grund technischer Grenzen immer deterministisch - auch wenn du das in der Regel ignorieren kannst. Für normale Fälle liefert rand() ausreichend gute Zufallszahlen.
Wenn's etwas besser sein soll:
http://de2.php.net/manual/de/function.mt-rand.php
Gruß, Philipp