Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Schritte zum Generieren einer zufälligen Zeichenfolge mit benutzerdefinierter Länge in PHP

Detaillierte Erläuterung der Schritte zum Generieren einer zufälligen Zeichenfolge mit benutzerdefinierter Länge in PHP

php中世界最好的语言
php中世界最好的语言Original
2018-05-21 11:31:271678Durchsuche

Dieses Mal erkläre ich Ihnen ausführlich die Schritte zum Generieren eines Zufallsstrings mit benutzerdefinierter Länge in PHP. Was sind die Vorsichtsmaßnahmen zum Generieren eines Zufallsstrings mit benutzerdefinierter Länge in PHP? ? Das Folgende ist ein praktischer Fall, schauen wir uns das an.

//随机生成字符串
function random($length) {
     srand(date("s"));
     $possible_charactors = "0123456789abcdefghijklmnopqrstuvwxyz";
     $string = "";
     while(strlen($string)<$length) {
          $string .= substr($possible_charactors,(rand()%(strlen($possible_charactors))),1);
     }
     return($string);
}

Beispiel 2, PHP generiert n sich nicht wiederholende Zufallszahleninstanzen

Verwenden Sie PHP, um n sich nicht wiederholende Zufallszahleninstanzen zu generieren

Es gibt 25 Werke zur Abstimmung, die Sie auswählen müssen 16 Werke in einer Abstimmung, und ein einzelnes Werk kann nur einmal in einer Abstimmung ausgewählt werden.

Ein Programmierer hat zuvor einen Fehler gemacht und vergessen, die Stimmen in der Datenbank zu speichern. Die von 200 Benutzern generierten Abstimmungssequenzen waren leer. Wie füllen Sie diese Lücke?
Zum Ausfüllen müssen Sie 16 sich nicht wiederholende Zufallszahlen zwischen 1 und 25 generieren. 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.
Programm:

<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定数量的不重复随机数
* $min 和 $max: 指定随机数的范围
* $num: 指定生成数量
*/ www.jbxue.com
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;
?>
Programm läuft:

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

Ergänzung:

Die Funktion mt_rand() wird zur Generierung von Zufallszahlen verwendet. Diese Funktion generiert Zufallszahlen im Durchschnitt viermal schneller als rand().
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(). 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.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte für PHP-ZIP-Komprimierungsklasse-Beispiel

Detaillierte Erläuterung der Schritte für PHP zur Bestimmung der laufende Status des Programms

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zum Generieren einer zufälligen Zeichenfolge mit benutzerdefinierter Länge in PHP. 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