|
Die PHP rand() Funktion benutzt den in der jeweiligen libc enthaltenen Zufallsgenerator. Gerade in älteren libc-Versionen ist dieser aber oft langsam und die Qualität der erzeugten Pseudozufalls-Sequenzen ist unbefriedigend bis unbekannt.
Die Funktion mt_rand() bietet einen Drop-In Ersatz für die von der libc bereitgestellten Funktionen. Sie benutzt einen Zufallsgenerator mit bekannter Charakteristik, den sogenannten "Mersenne Twister", der Pseudozufalls-Sequenzen generiert, die auch kryptografischen Ansprüchen genügen sollten und viermal so schnell arbeitet wie der typische libc-Algorithmus.
Weitere Informationen zum Mersenne Twister und zur optimierten Implementation finden sich unter http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html.
Ohne die optionalen Parameter min und max liefert mt_rand() eine Pseudo-Zufallszahl zwischen 0 und einem plattformabhängigen Maximalwert, der mit mt_getrandmax() ermittelt werden kann.
Benutzen Sie unbedingt mt_srand(), um vor dem ersten Aufruf von mt_rand() einen neuen Startwert festzulegen, ansonsten erhalten Sie bei jedem Programmlauf dieselbe Sequenz von Werten.
Anmerkung: Seit PHP 4.2.0 ist es nicht mehr nötig, den Zufallszahlengenerator zu initialisieren, bevor man ihn benutzt.
Anmerkung: In PHP-Versionen vor 3.0.7 hatte der zweite Parameter max nicht den Maximalwert sondern die Größe des Werteintervalls an, d.h. in diesen älteren Version muss statt mt_rand(min,max) mt_rand(min,max-min) benutzt werden, um dasselbe Ergebnis zu erhalten.
Siehe auch mt_srand(), mt_getrandmax(), srand(), rand() und getrandmax().
Zurück | Zum Anfang | Weiter |
mt_getrandmax | Nach oben | mt_srand |
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:57:18