mt_rand

(PHP 4, PHP 5, PHP 7)

mt_randErzeugt eine Zufallszahl nach dem Mersenne Twister Verfahren

Beschreibung

mt_rand ( void ) : int
mt_rand ( int $min , int $max ) : int
Achtung

Diese Funktion erzeugt keine kryptographisch sicheren Werte und sollte nicht für kryptographische Zwecke verwendet werden. Wenn kryptographisch 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, 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 von PHP 7.1 auf 64-bit Rechnern unterscheiden können.
7.1.0 rand() wurde zu einem 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.
5.3.4 Erzeugt eine E_WARNING und gibt FALSE zurück, wenn max < min.

Beispiele

Beispiel #1 mt_rand()-Beispiel

<?php
echo mt_rand() . "\n";
echo 
mt_rand() . "\n";

echo 
mt_rand(515);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

1604716014
1478613278
6

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