Mailinglisten-Archive |
Guido Haeger schrieb > shuffle($array); Ich habe gerade mehrfach in einer Schleife 10.000 mal jeweils 3 Zahlen zwischen 1 und 100 mit der oben genannten Funktion generieren lassen. Das Ergebnis unter Nutzung von shuffle() ist demnach wenig zufällig. Ausgegegeben wurden durschnittlich etwa: 2200 x 98 2200 x 97 1500 x 99 820 x 100 alle restlichen Zahlen zwischen 1 und 96 wurden nur zwischen 320 und 200 "zufällig" ausgewählt. D.h. 98 und 97 kommen im Ergebnisarray etwa 10 mal häufiger vor als andere Zahlen. Zumindest unter PHP4 ist nachfolgende Funktion deshalb besser geeignet function generate_numbers($min, $max, $anz) { $array = range($min, $max); srand ((double)microtime()*1000000); for($x = 0; $x < $anz; $x++) { $i = rand(1, count($array))-1; $erg[] = $array[$i]; array_splice($array, $i, 1); } return $erg; } // 5 eindeutige Zahlen im Bereich von 1 bis 100 ermitteln $zufalls_array = generate_numbers(1, 100, 5); echo join("; ", $zufalls_array);
php::bar PHP Wiki - Listenarchive