mt_rand
(PHP 4, PHP 5, PHP 7, PHP 8)
mt_rand — Erzeugt eine Zufallszahl nach dem Mersenne-Twister-Verfahren
Beschreibung
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 des
» Mersenne Twisters, der 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. Wenn zum Beispiel eine
Zufallszahl zwischen 5 und 15 (inklusive) benötigt wird, muss
mt_rand(5, 15)
verwendet werden.
Achtung
Diese Funktion erzeugt keine kryptografisch sicheren Werte und
darf nicht für kryptografische Zwecke verwendet werden
oder für Zwecke, bei denen die zurückgegebenen Werte nicht abschätzbar sein
dürfen.
Falls kryptographisch sichere Zufallszahlen benötigt werden, kann der
Random\Randomizer mit der
Random\Engine\Secure-Engine verwendet werden. Für
einfache Anwendungsfälle bieten die Funktionen random_int()
und random_bytes() eine bequeme und sichere
API, die den CSPRNG des
Betriebssystems verwendet.
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
.
Beispiele
Beispiel #1 mt_rand()-Beispiel
<?php
echo mt_rand(), "\n";
echo mt_rand(), "\n";
echo mt_rand(5, 15), "\n";
?>
Das oben gezeigte Beispiel erzeugt
eine ähnliche Ausgabe wie:
Anmerkungen
Warnung
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() - Get a cryptographically secure, uniformly selected integer
- random_bytes() - Get cryptographically secure random bytes