(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — Construye un nuevo motor Mt19937
Debido a que el motor Mt19937 ("Mersenne Twister") acepta solo un único entero de 32 bits como semilla, el número de secuencias aleatorias posibles se limita a solo 232 (es decir, 4,294,967,296), a pesar del enorme período de Mt19937 de 219937-1.
Al depender ya sea de una siembra aleatoria implícita o explícita, las duplicaciones aparecerán mucho antes. Se espera que las semillas duplicadas ocurran con una probabilidad del 50% después de menos de 80,000 semillas generadas al azar según el problema del cumpleaños. Una probabilidad del 10% de una semilla duplicada ocurre después de generar aproximadamente 30,000 semillas al azar.
Esto hace que Mt19937 no sea adecuado para aplicaciones donde las secuencias duplicadas no deben ocurrir con más que una probabilidad insignificante. Si se requiere siembra reproducible, tanto el motor Random\Engine\Xoshiro256StarStar como el Random\Engine\PcgOneseq128XslRr64 admiten semillas mucho más grandes que es poco probable que colisionen aleatoriamente. Si no se requiere reproducibilidad, el motor Random\Engine\Secure proporciona aleatoriedad criptográficamente segura.
Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.
seed
Rellena el estado con valores generados con un generador congruencial lineal
que ha sido inicializado con seed
interpretado como un entero
sin signo de 32 bits.
Si seed
es omitido o null
, se utilizará un entero sin signo aleatorio
de 32 bits.
mode
El uso de una de las constantes siguientes para especificar la implementación del algoritmo a utilizar.
MT_RAND_MT19937
:
La implementación correcta de Mt19937.
MT_RAND_PHP
:
Una implementación incorrecta para la retrocompatibilidad con mt_srand() antes de
PHP 7.1.0.
Esta función ha sido declarada OBSOLETA a partir de PHP 8.3.0. Su uso está totalmente desaconsejado.
Ejemplo #1 Ejemplo de Random\Engine\Mt19937::__construct()
<?php
// Utiliza una semilla aleatoria de 32 bits.
$e = new \Random\Engine\Mt19937();
$r = new \Random\Randomizer($e);
?>