Heim  >  Artikel  >  Backend-Entwicklung  >  PHP generiert zufällig Zufallszahlen, die nicht in einem Bereich liegen

PHP generiert zufällig Zufallszahlen, die nicht in einem Bereich liegen

王林
王林Original
2019-09-19 11:53:592642Durchsuche

PHP generiert zufällig Zufallszahlen, die nicht in einem Bereich liegen

Idee: Speichern Sie die generierten Zufallszahlen in einem Array und entfernen Sie dann doppelte Werte im Array, 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 entworfen werden, um Zufallszahlen zu generieren? 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.

Sie können auch Werte innerhalb eines bestimmten Bereichs in einem Array speichern, dann shuffle($array) verwenden, um das Array zu unterbrechen, und dann eine bestimmte Anzahl von Werten abfangen. Die letztere Methode generiert jedoch ein größeres Array, wenn der angegebene Bereich von Zufallszahlen zu groß ist.

Der Code für die erste Methode ist unten angegeben, und die zweite Methode ist einfacher.

<?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, ",");
?>

Laufergebnisse: 48,5,19,36,63,72,82,77,46,16
Ergänzende Anweisungen:

1. Bei der Generierung von Zufallszahlen verwenden wir die Funktion mt_rand(). 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 array_flip() verwendet wird, um den Schlüssel und den Wert des Arrays zweimal auszutauschen. Dieser Ansatz ist viel schneller als die Verwendung von array_unique() und entfernt gleichzeitig doppelte Werte aus dem Array.

3. 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 Nummern von 0 bis n sind. Wenn Sie diesen Schritt nicht ausführen, sind die Schlüsselnamen beim Löschen doppelter Werte möglicherweise diskontinuierlich. Wenn Sie zum Durchlaufen for verwenden, treten Probleme auf. Wenn Sie jedoch foreach verwenden oder nicht durchqueren müssen, ist kein Shuffle erforderlich.

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonPHP generiert zufällig Zufallszahlen, die nicht in einem Bereich liegen. 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