(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — Construye un nuevo motor Mt19937
Dado que el motor Mt19937 ("Mersenne Twister") toma un solo entero de 32 bits como semilla, el número de secuencias aleatorias posibles está limitado a solo 232 (por ejemplo 4 294 967 296), a pesar de la enorme período de Mt19937 de 219937-1.
Cuando se confía en una semilla aleatoria implícita o explícita, las duplicaciones aparecerán mucho antes. Las semillas duplicadas son esperadas con una probabilidad del 50% después de menos de 80 000 semillas generadas aleatoriamente según el problema del cumpleaños. Una probabilidad del 10% de una semilla duplicada ocurre después de haber generado aproximadamente 30 000 semillas de manera aleatoria.
Esto hace que Mt19937 sea inadecuado para aplicaciones donde las secuencias duplicadas no deben ocurrir con más que una probabilidad despreciable. Si se requiere una semilla reproducible, tanto el motor Random\Engine\Xoshiro256StarStar como Random\Engine\PcgOneseq128XslRr64 soportan semillas mucho más grandes que son poco propensas a colisionar aleatoriamente. Si la reproductibilidad no es requerida, el motor Random\Engine\Secure proporciona datos aleatorios criptográficamente seguros.
Esta función está actualmente no documentada; solo la lista de sus argumentos está disponible.
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 funcionalidad está OBSOLETA a partir de PHP 8.3.0. Depender de esta funcionalidad está fuertemente 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);
?>