Heim > Backend-Entwicklung > PHP-Problem > PHP-Zufallszahl wiederholt sich nicht

PHP-Zufallszahl wiederholt sich nicht

(*-*)浩
Freigeben: 2023-02-24 09:48:02
Original
2508 Leute haben es durchsucht

PHP generiert effizient m eindeutige Zufallszahlen im n-Bereich (m

PHP-Zufallszahl wiederholt sich nicht

Hinweis: Es wird auch im Buch „Programming Pearls“ erwähnt, der Titel lautet „So generieren Sie effizient m sich nicht wiederholende Zufallszahlen im Bereich von n (mErste Schritte mit PHP-Programmierung zum Beherrschen )

Dieser Algorithmus verwendet sehr geschickt die Position der Zufallszahl (den Index des Arrays), anstatt jedes Mal die Zufallszahl selbst zu verwenden , es wird aus dem Wertebereich ausgeschlossen und beim nächsten Mal werden nur die verbleibenden Zahlen ausgewählt. Die Auswahl der Zufallszahlen kann in einem Durchlauf abgeschlossen werden, was sehr effizient ist.

function rand_num($num='200'){
for($i=0;$i<$num;$i++){
$n[$i] = $i;
}
for($i=0;$i<$num;$i++){
$rand = mt_rand($i,$num-1);
//数组 随机数交换下标
if($n[$i] == $i){
$n[$i] = $n[$rand];
$n[$rand] = $i;
}
}
}
Nach dem Login kopieren

1. Der erste Schritt besteht darin, jeder Zahl im Array in der Reihenfolge ihres Index einen Wert zuzuweisen und ein Array von numerischen Schlüsselwerten $num zu erhalten, die in der entsprechenden Reihenfolge angeordnet sind.

2. Beginnen Sie im zweiten Schritt mit dem Abrufen der Zufallszahl $rand im Bereich [i, $num-1] und verwenden Sie die erhaltene Zufallszahl $rand als Index, der dem aktuellen Positionsschlüssel entspricht i im Array-Wert $rand, ersetzen Sie den Wert, der dem Index des Schlüssels $rand im Array entspricht, durch i. Dies ist tatsächlich ein gegenseitiger Austausch von Array-Schlüsselwerten. Die Bedeutung besteht darin, die generierte Zufallszahl aus dem Wertebereich [i,$num-1] auszuschließen und beim nächsten Mal den Wert aus den verbleibenden Zahlen [i+1,num-1] zu übernehmen.

3. Um wiederholte Werte zu vermeiden, führen Sie alternierende Operationen nur an den unveränderten Schlüssel-Wert-Paaren durch, dh führen Sie alternierende Operationen an den Positionen der ursprünglichen Array-Sequenz durch (Schlüssel == Wert). ).

4.

PHP-Zufallszahl wiederholt sich nicht

Das obige ist der detaillierte Inhalt vonPHP-Zufallszahl wiederholt sich nicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage