Frage:
Es müssen 16 Werke in einer Abstimmung ausgewählt werden einmal in einer Abstimmung. Ein Programmierer hat zuvor einen Fehler gemacht und vergessen, die von 200 Benutzern generierten Stimmen in der Datenbank zu speichern. Wie füllen Sie diese Lücke?
Zum Füllen müssen 16 sich nicht wiederholende Zufallszahlen zwischen 1 und 25 generiert werden. Wie gestaltet man die Funktion konkret? Speichern Sie Zufallszahlen in einem Array und entfernen Sie dann doppelte Werte im Array, um eine bestimmte Anzahl sich nicht wiederholender Zufallszahlen zu generieren.
Das Programm ist wie folgt:
<?php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { $count = 0; $return = array(); while ($count < $num) { $return[] = mt_rand($min, $max); $return = array_flip(array_flip($return)); $count = count($return); } shuffle($return); return $return; } $arr = unique_rand(1, 25, 16); sort($arr); $result = ''; for($i=0; $i < count($arr);$i++) { $result .= $arr[$i].','; } $result = substr($result, 0, -1); echo $result; ?>
Die Laufergebnisse sind wie folgt:
2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24
Ergänzende Anweisungen :
1. Die Funktion mt_rand() wird zum Generieren von Zufallszahlen verwendet. Diese Funktion generiert Zufallszahlen im Durchschnitt viermal schneller als rand().
2. Beim Entfernen doppelter Werte aus dem Array wird die „Flip-Methode“ verwendet, bei der die Funktion array_flip() verwendet wird, um den Schlüssel und den Wert des Arrays zweimal auszutauschen. Dieser Ansatz ist viel schneller als die Verwendung der Funktion array_unique().
3. Bevor Sie das Array zurückgeben, weisen Sie dem Array zunächst mit shuffle() einen neuen Schlüsselnamen zu. Stellen Sie dabei sicher, dass der Schlüsselname eine fortlaufende Nummer von 0 bis n ist. Wenn dieser Schritt nicht ausgeführt wird, sind die Schlüsselnamen beim Löschen doppelter Werte möglicherweise diskontinuierlich, was zu Problemen beim Durchlaufen führen kann.
Empfohlenes Tutorial: PHP-Video-Tutorial
Das obige ist der detaillierte Inhalt vonPHP generiert 10 sich nicht wiederholende Zufallszahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!