(PHP 4, PHP 5, PHP 7, PHP 8)
mt_srand — Initialisiert den Mersenne-Twister-Zufallszahlengenerator
Setzt den Zufallszahlengenerator mit seed
oder mit
einem Zufallswert, wenn seed
nicht angegeben ist.
Hinweis: Es besteht keine Notwendigkeit, den Zufallsgenerator für Zahlen mit srand() oder mt_srand() zu füttern, das geschieht automatisch.
Da die Mt19937- ("Mersenne Twister") Engine nur einen einzigen 32-Bit-Integer als Seed akzeptiert, ist die Anzahl der möglichen Zufallsfolgen trotz der riesigen Periode von 219937-1 auf nur 232 (d. h. 4.294.967.296) begrenzt.
Wenn man sich auf implizites oder explizites zufälliges Seeding verlässt, treten Duplikate viel früher auf. Nach dem Geburtstagsproblem werden doppelte Seeds mit einer Wahrscheinlichkeit von 50% nach weniger als 80.000 zufällig erzeugten Seeds erwartet. Nach etwa 30.000 zufällig erzeugten Seeds tritt ein doppeltes Seed mit einer Wahrscheinlichkeit von 10% auf.
Daher ist Mt19937 nicht für Anwendungen geeignet, bei denen doppelte Sequenzen nur mit vernachlässigbarer Wahrscheinlichkeit auftreten dürfen. Wenn reproduzierbares Seeding erforderlich ist, unterstützen sowohl Random\Engine\Xoshiro256StarStar als auch Random\Engine\PcgOneseq128XslRr64 wesentlich größere Seeds, bei denen eine zufällige Kollision unwahrscheinlich ist. Wenn keine Reproduzierbarkeit erforderlich ist, bietet die Engine Random\Engine\Secure eine kryptografisch sichere Zufallsverteilung.
seed
Füllt den Zustand mit Werten, die mit einem linearen Kongruenzgenerator
erzeugt wurden, der mit seed
,
interpretiert als vorzeichenlose 32-Bit-Ganzzahl, initialisiert wurde.
Wenn seed
weggelassen wird oder null
ist, wird
eine zufällige vorzeichenlose 32-Bit-Ganzzahl verwendet.
mode
Eine der folgenden Konstanten kann verwendet werden, um die Implementierung des zu verwendenden Algorithmus zu bestimmen.
MT_RAND_MT19937
:
Die korrekte Mt19937-Implementierung; verfügbar ab PHP 7.1.0.
MT_RAND_PHP
:
Verwendet eine inkorrekte Mersenne-Twister-Implementierung, die vor
PHP 7.1.0 standardmäßig verwendet wurde. Dieser Modus ist aus Gründen
der Abwärtskompatibilität verfügbar.
Dieses Feature ist seit PHP 8.3.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieses Features wird dringend abgeraten.
Es wird kein Wert zurückgegeben.
Version | Beschreibung |
---|---|
8.3.0 |
seed kann nun null sein.
|
7.1.0 | srand() ist nun ein Alias von mt_srand(). |
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.
|