mt_srand

(PHP 4, PHP 5, PHP 7, PHP 8)

mt_srandInitialisiert den Mersenne-Twister-Zufallszahlengenerator

Beschreibung

mt_srand(?int$seed = null, int$mode = MT_RAND_MT19937): void

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.

Achtung

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.

Parameter-Liste

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.
Warnung

Dieses Feature ist seit PHP 8.3.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieses Features wird dringend abgeraten.

Rückgabewerte

Es wird kein Wert zurückgegeben.

Changelog

VersionBeschreibung
8.3.0seed kann nun null sein.
7.1.0srand()ist nun ein Alias von mt_srand().
7.1.0mt_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.

Siehe auch

  • mt_rand() - Erzeugt eine Zufallszahl nach dem Mersenne-Twister-Verfahren
  • mt_getrandmax() - Liefert den größtmöglichen Zufallswert
  • srand() - Legt den Anfangswert für den Zufallsgenerator fest
To Top