25.7. Wie kann ich aus einem Zahlenbereich von x bis y, zufällig n Zahlen auswählen, so dass keine Zahl doppelt vorkommt?Antwort von Guido HaegerHäufig werden dazu Schleifen programmiert, die pro Durchlauf eine Zufallszahl aus dem vorgegebenen Bereich ermitteln. Danach wird geprüft, ob diese Zufallszahl schon ermittelt wurde. Ist das der Fall, wird die Schleife erneut durchlaufen. Da insbesondere bei PHP3 die Abarbeitung von Schleifen nicht besonders effizient ist, kann es bei dieser Methode sehr lange dauern, bis die gewünschte Anzahl eindeutiger Zufallszahlen ermittelt wurde. <?PHP 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); ?> |
||
hosted by |
||
25.7. Wie kann ich aus einem Zahlenbereich von x bis y, zufällig n Zahlen auswählen, so dass keine Zahl doppelt vorkommt? http://www.dclp-faq.de/q/q-code-zufallszahlen.html |
||
de.comp.lang.php FAQ | (c) Copyright 2000-2003 Das dclp-FAQ-Team |