Heim >Backend-Entwicklung >PHP-Problem >Wie generiert man in PHP N eindeutige Zufallszahlen innerhalb eines bestimmten Bereichs?
So generiert PHP N eindeutige Zufallszahlen innerhalb eines angegebenen Bereichs: Speichern Sie zuerst die Werte im angegebenen Bereich und verwenden Sie dann [shuffle($array)], um das Array zu unterbrechen eine bestimmte Anzahl von Werten.
PHP-Methode zum Generieren von N sich nicht wiederholenden Zufallszahlen innerhalb eines angegebenen Bereichs:
Idee: Generieren Sie den Zufall Zahlen werden in einem Array gespeichert und dann werden doppelte Werte aus dem Array entfernt, um eine bestimmte Anzahl sich nicht wiederholender Zufallszahlen zu generieren.
Bei der PHP-Website-Entwicklung müssen wir manchmal eine bestimmte Anzahl sich nicht wiederholender Zufallszahlen innerhalb eines bestimmten Bereichs generieren. Wie kann diese Funktion speziell zum Generieren von Zufallszahlen entworfen werden? Wir können zufällig generierte Zahlen in einem Array speichern, aber indem wir doppelte Werte beim Speichern entfernen, kann eine bestimmte Anzahl sich nicht wiederholender Zufallszahlen generiert werden. Natürlich können Sie auch Werte innerhalb eines bestimmten Bereichs in einem Array speichern, mit shuffle($array)
das Array unterbrechen und dann eine bestimmte Anzahl von Werten abfangen. Die letztere Methode generiert jedoch ein größeres Array, wenn der angegebene Zufallszahlenbereich zu groß ist.
Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Kompetenz
Der Code für den ersten Ansatz ist unten angegeben, der zweite Ansatz ist einfacher , du kannst es ausprobieren, es ist fast das Gleiche
<?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; } //生成10个1到100范围内的不重复随机数 $arr = unique_rand(1, 100, 10); echo implode($arr, ","); ?>
Das Programm läuft wie folgt ab:
48,5,19,36,63,72,82,77,46, 16
Ein paar zusätzliche Hinweise:
1 Wir haben die Funktion mt_rand()
beim Generieren von Zufallszahlen verwendet. Diese Funktion generiert Zufallszahlen im Durchschnitt um ein Vielfaches schneller als rand()
.
2. Beim Entfernen doppelter Werte aus dem Array wird die „Flip-Methode“ verwendet, bei der mit array_flip()
der Schlüssel und der Wert des Arrays zweimal ausgetauscht werden. Dieser Ansatz entfernt doppelte Werte aus dem Array und ist viel schneller als die Verwendung von array_unique()
.
3. Bevor Sie das Array zurückgeben, weisen Sie dem Array mit shuffle()
einen neuen Schlüsselnamen zu. Stellen Sie dabei sicher, dass der Schlüsselname eine fortlaufende Nummer von 0-n ist. Wenn Sie diesen Schritt nicht ausführen, kann es beim Löschen doppelter Werte zu diskontinuierlichen Schlüsselnamen kommen. Wenn Sie for zum Durchlaufen verwenden, ist dies jedoch nicht der Fall muss gemischt werden.
Zusammenfassung
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenz- und Lernwert für jedermanns Studium oder Arbeit hat für Ihre Rezension des Skripts Home-Support. Wenn Sie weitere verwandte Inhalte erfahren möchten, schauen Sie sich bitte die entsprechenden Links unten an
Das obige ist der detaillierte Inhalt vonWie generiert man in PHP N eindeutige Zufallszahlen innerhalb eines bestimmten Bereichs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!