Heim >Backend-Entwicklung >PHP-Problem >Welche Methoden gibt es zum Generieren von Zufallszahlen in PHP?

Welche Methoden gibt es zum Generieren von Zufallszahlen in PHP?

王林
王林nach vorne
2021-03-03 17:52:1119576Durchsuche

Welche Methoden gibt es zum Generieren von Zufallszahlen in PHP?

Die Methode zum Generieren von Zufallszahlen in PHP ist sehr einfach, da PHP uns intern eine vorgefertigte Zufallszahlenmethode zur Verfügung stellt. Daher müssen wir keine zusätzliche Konfiguration durchführen, sondern nur die interne Methode aufrufen. Die

php-Zufallszahlenfunktion lautet wie folgt:

1. Rand-Funktion

rand()-Funktion kann zufällige Ganzzahlen generieren, ohne Parameter hinzuzufügen. Wenn Sie den Bereich der Zufallszahlen festlegen möchten, können Sie in der Funktion die Werte von Min und Max festlegen. Wenn Sie einen Zufallszahlen-Seed generieren müssen, verwenden Sie die Konfiguration der Srand-Funktion.

echo rand();                      // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 32767,RAND_MAX 可以用函数 getrandmax() 获得
echo rand(1000000, 9999999);      // 生成 1000000~9999999 之间的随机数

$seed = time();                   // 使用时间作为种子源
srand($seed);                     // 播下随机数发生器种子
echo rand();                      // 根据种子生成 0~32768 之间的随机数。如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);      // 根据种子生成 1000000~9999999 之间的随机数。如果 $seed 值固定,则生成的随机数也不变

2. Die mt_rand-Funktion

mt_rand() verwendet den Mersenne-Twister-Algorithmus, um zufällige Ganzzahlen zurückzugeben. Der Hauptunterschied zur rand()-Funktion ist:

mt_rand() generiert Zufallswerte im Durchschnitt schneller als rand () bereitgestellt von libc Viermal, und die Seeding-Funktion verwendet mt_srand(), nicht srand(). Obwohl es diesen Unterschied gibt, sind ihre Verwendungsmethoden immer noch ähnlich, wie folgt:

echo mt_rand();                   // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 2147483647(与rand()中的 RAND_MAX 不同),RAND_MAX 可以用函数 mt_getrandmax() 获得
echo mt_rand(1000000, 9999999);   // 生成 1000000~9999999 之间的随机数,不受系统 RAND_MAX 影响

$seed = time();                   // 使用时间作为种子源
mt_srand($seed);                  // 播下随机数发生器种子
echo rand();                      // 根据种子生成 0~RAND_MAX 之间的随机数,如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);      // 根据种子生成 1000000~9999999 之间的随机数,如果 $seed 值固定,则生成的随机数也不变

Hinweis: Die von rand() und mt_rand() generierten Zufallszahlen sind alle ganze Zahlen und enthalten keine englischen Buchstaben.

(Verwandte Empfehlung: php-Tutorial)

3. Uniqid-Funktion

uniqid()-Funktion generiert eine eindeutige ID basierend auf der aktuellen Zeit in Mikrosekunden. Die Länge der standardmäßig generierten ID beträgt 13 oder 23 Ziffern, bestehend aus englischen Buchstaben und Zahlen. Die Funktion uniqid() verfügt über zwei Parameter im folgenden Format:

uniqid(prefix,more_entropy)

wobei

  • prefix: das Präfix zum Generieren der ID

  • more_entropy: ob zusätzliche Entropie hinzugefügt werden soll

Das folgende Programm,

echo uniqid();                    // 生成13位字符串,如:55f540e273e93
echo uniqid('one.');              // 生成前缀为one.加13位随机字符的字符串,如:one.55f540e273e93
echo uniqid('two.', true);        // 生成前缀为two.加23位随机字符的字符串(加了熵),如:two.55f540e273e932.77804707,比上面的多了 10 位,即多了:2.77804707

, erklärt: Da es auf der Systemzeit basiert, ist die von dieser Funktion generierte ID nicht optimal. Um eine absolut eindeutige ID zu generieren, verwenden Sie die Funktion md5().

Lernvideo-Sharing: php-Video-Tutorial

Originallink: https://www.awaimai.com/216.html

Das obige ist der detaillierte Inhalt vonWelche Methoden gibt es zum Generieren von Zufallszahlen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen