(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — Constructs a new Mt19937 engine
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.
Diese Funktion ist bis jetzt nicht dokumentiert. Es steht nur die Liste der Parameter zur Verfügung.
seed
Fills the state with values generated with a linear congruential generator
that was seeded with seed
interpreted as an unsigned
32 bit integer.
If seed
is omitted or null
, a random unsigned
32 bit integer will be used.
mode
Use one of the following constants to specify the implementation of the algorithm to use.
MT_RAND_MT19937
:
The correct Mt19937 implementation.
MT_RAND_PHP
:
An incorrect implementation for backwards compatibility with mt_srand() prior to
PHP 7.1.0.
Dieses Feature ist seit PHP 8.3.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieses Features wird dringend abgeraten.
Beispiel #1 Random\Engine\Mt19937::__construct() example
<?php
// Uses a random 32 Bit seed.
$e = new \Random\Engine\Mt19937();
$r = new \Random\Randomizer($e);
?>