Heim  >  Artikel  >  Backend-Entwicklung  >  PHP generiert einen Beispielcode für N sich nicht wiederholende Zufallszahlen

PHP generiert einen Beispielcode für N sich nicht wiederholende Zufallszahlen

怪我咯
怪我咯Original
2017-07-11 11:37:491142Durchsuche

Dieser Artikel beschreibt hauptsächlich, wie man mit PHP N sich nicht wiederholende Zufallszahleninstanzen generiert. Der Code lautet 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 = &#39;&#39;;
for($i=0; $i < count($arr);$i++)
{
 $result .= $arr[$i].&#39;,&#39;;
}
$result = substr($result, 0, -1);
echo $result;
?>

Das Programm läuft wie folgt:

Der Code lautet wie folgt:

2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24

Ein paar zusätzliche Hinweise:
Die Funktion mt_rand() wird verwendet, um Zufallszahlen zu generieren. Diese Funktion generiert Zufallszahlen im Durchschnitt viermal schneller als rand().
Die „Flip-Methode“ wird verwendet, um doppelte Werte im Array zu entfernen. Dabei werden array_flip() verwendet, um den Schlüssel und den Wert des Arrays zweimal auszutauschen. Dieser Ansatz ist viel schneller als die Verwendung von array_unique().
Bevor Sie das Array zurückgeben, verwenden Sie zunächst shuffle(), um dem Array neue Schlüsselnamen zuzuweisen. Stellen Sie dabei sicher, dass die Schlüsselnamen fortlaufende Zahlen von 0 bis n sind. Wenn dieser Schritt nicht ausgeführt wird, sind die Schlüsselnamen möglicherweise diskontinuierlich, wenn doppelte Werte löscht , was zu Problemen beim Durchlaufen führt.

Das obige ist der detaillierte Inhalt vonPHP generiert einen Beispielcode für N sich nicht wiederholende Zufallszahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn