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

Mit der Funktion array_rand() . In PHP3 steht diese Funktion nicht zur Verfügung. Nachfolgende Funktion liefert hier bessere Ergebnisse, als shuffle() auf das Array anzuwenden und dann die n Zahlen zu verwenden.

<?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);

?>

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.php-faq.de/q/q-code-zufallszahlen.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team