International PHP Conference 2015

mt_rand

(PHP 4, PHP 5)

mt_randErzeugt "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

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top