Heim > Backend-Entwicklung > PHP-Problem > PHP generiert 10 sich nicht wiederholende Zufallszahlen

PHP generiert 10 sich nicht wiederholende Zufallszahlen

王林
Freigeben: 2023-02-25 17:42:01
Original
7543 Leute haben es durchsucht

PHP generiert 10 sich nicht wiederholende Zufallszahlen

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 = &#39;&#39;;
for($i=0; $i < count($arr);$i++)
{
  $result .= $arr[$i].&#39;,&#39;;
}
$result = substr($result, 0, -1);
echo $result;
?>
Nach dem Login kopieren

Die Laufergebnisse sind wie folgt:

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

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!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage