mt_rand
(PHP 4, PHP 5, PHP 7, PHP 8)
mt_rand — Erzeugt eine Zufallszahl nach dem Mersenne-Twister-Verfahren
Beschreibung
$min
, int $max
): intDiese Funktion erzeugt keine kryptografisch sicheren Werte und sollte nicht für kryptografische Zwecke verwendet werden. Wenn kryptografisch sichere Werte benötigt werden, sollten stattdessen die Funktionen random_int(), random_bytes() oder openssl_random_pseudo_bytes() verwendet werden.
Viele Zufallszahlengeneratoren, die auf älteren libc-Versionen basieren, haben seltsame oder doch zumindest unerwartete Verhaltensweisen und sind zudem recht langsam. Die Funktion mt_rand() ist ein vollwertiger Ersatz für das ältere rand(). Sie verwendet einen Zufallszahlengenerator mit den bekannten Charakteristika der » Mersenne Twister, die Zufallszahlen viermal schneller generiert als der durchschnittliche libc-rand()-Aufruf.
Wenn die Funktion ohne Angabe von min
und/oder
max
aufgerufen wird, gibt
mt_rand() eine Pseudozufallszahl zwischen 0 und
mt_getrandmax() zurück. Benötigen Sie zum Beispiel eine
Zufallszahl zwischen 5 und 15 (inklusive), verwenden Sie
mt_rand(5, 15)
.
Parameter-Liste
-
min
-
Der optionale niedrigste Wert, der zurückgegeben werden kann (Standardwert: 0).
-
max
-
Der optionale höchste Wert, der zurückgegeben werden kann (Standardwert: mt_getrandmax()).
Rückgabewerte
Ein zufälliger Integerwert zwischen min
(oder 0) und
max
(oder mt_getrandmax(),
inklusive) oder false
, wenn max
kleiner ist als
min
.
Changelog
Version | Beschreibung |
---|---|
7.2.0 | mt_rand() erhielt einen Bugfix für einen Modulus-Verzerrungsfehler. Das bedeutet, dass Folgen mit einem bestimmten Startwert sich ab PHP 7.1 auf 64bit-Rechnern unterscheiden können. |
7.1.0 | rand() ist nun ein Alias von mt_rand(). |
7.1.0 |
mt_rand()
verwendet nun eine korrekte Version des
Mersenne-Twister-Algorithmus. Um auf das vorherige Verhalten
auszuweichen, kann mt_srand() mit
MT_RAND_PHP als zweitem Parameter verwendet
werden.
|
Beispiele
Beispiel #1 mt_rand()-Beispiel
<?php
echo mt_rand() . "\n";
echo mt_rand() . "\n";
echo mt_rand(5, 15);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
1604716014 1478613278 6
Anmerkungen
Der Bereich von min
und max
darf nicht größer sein als mt_getrandmax(). Das heißt,
(max
- min
) <=
mt_getrandmax(). Andernfalls kann
mt_rand() schlechtere Zufallszahlen liefern als es
sollte.
Siehe auch
- mt_srand() - Initialisiert den Mersenne-Twister-Zufallszahlengenerator
- mt_getrandmax() - Liefert den größtmöglichen Zufallswert
- random_int() - Generates cryptographically secure pseudo-random integers
- random_bytes() - Generates cryptographically secure pseudo-random bytes
- openssl_random_pseudo_bytes() - Generate a pseudo-random string of bytes
- rand() - Erzeugt eine zufällige Zahl