de.comp.lang.php FAQ

25.7. Wie kann ich aus einem Zahlenbereich von x bis y, zufällig n Zahlen auswählen, so dass keine Zahl doppelt vorkommt?

Keywords: Zufall | Zahlen | Duplikat | einmalig

Antwort von Guido Haeger

Hä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
schlund + partner

Valid HTML 4.01! Valid CSS!

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