mt_srand

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

mt_srandInicializa el generador de números aleatorios Mersenne Twister

Descripción

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

mt_srand() inicializa el generador de valores aleatorios con seed o con un valor aleatorio si ningún parámetro seed es proporcionado.

Nota: No es necesario usar una semilla para usar el generador de números aleatorios con srand() o mt_srand() ya que se hace automáticamente.

Precaución

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.

Parámetros

seed

Rellena el estado con valores generados por 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, un entero sin signo de 32 bits será utilizado de manera aleatoria.

mode

Utilice una de las constantes siguientes para especificar la implementación del algoritmo a utilizar.

  • MT_RAND_MT19937: La implementación correcta de Mt19937, disponible a partir de PHP 7.1.0.
  • MT_RAND_PHP Utiliza una implementación incorrecta de Mersenne Twister que era el valor por omisión antes de PHP 7.1.0. Este modo está disponible para asegurar la compatibilidad ascendente.

Advertencia

Esta función ha sido declarada OBSOLETA a partir de PHP 8.3.0. Su uso está totalmente desaconsejado.

Valores devueltos

No devuelve ningún valor.

Historial de cambios

Versión Descripción
8.3.0 seed es ahora nullable.
7.1.0 srand() ha sido cambiado para ser un alias de mt_srand().
7.1.0 mt_rand() ha sido actualizado para utilizar la versión corregida, correcta del algoritmo de Mersenne Twister. Para volver al comportamiento anterior, utilice mt_srand() con MT_RAND_PHP como segundo parámetro.

Ver también

  • mt_rand() - Genera un valor aleatorio mediante el generador de números aleatorios Mersenne Twister
  • mt_getrandmax() - El valor aleatorio más grande posible
  • srand() - Inicializa el generador de números aleatorios