mt_rand

Erzeugt "bessere" Zufallszahlen

Beschreibung

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

Viele Zufallszahlengeneratoren, die auf älteren libc-Versionen basieren, haben seltsame oder doch zumindest unerwartete Verhaltensweisen und sind zudem recht langsam. Standardmäßig verwendet PHP den libc-Zufallszahlengenerator mit der Funktion rand. Die Funktion mt_rand kann jedoch als vollwertiger Ersatz verwendet werden. 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
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

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.

Achtung

Wenn max größer als 2^32 ist (auf einem 64-bit System), dann sind die Rückgabewerte von mt_rand bevorzugt gerade Zahlen, d.h. die Rückgabewerte sind nicht mehr strikt gleichverteilt. Dies kommt daher, dass, wenn max größer ist als der Wert, der von mt_getrandmax zurückgegeben wird, die Ausgabe des Zufallszahlengenerators hochskaliert werden muss.

Siehe auch

  • mt_srand
  • mt_getrandmax
  • openssl_random_pseudo_bytes
  • rand