mt_srand

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

mt_srandSeeds the Mersenne Twister Random Number Generator

Descripción

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

Seeds the random number generator with seed or with a random value if no seed is given.

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

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, available as of PHP 7.1.0.
  • MT_RAND_PHP Uses an incorrect Mersenne Twister implementation which was used as the default up till PHP 7.1.0. This mode is available for backward compatibility.

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 is now nullable.
7.1.0 srand() has been made an alias of mt_srand().
7.1.0 mt_rand() has been updated to use the fixed, correct, version of the Mersenne Twister algorithm. To fall back to the old behaviour, use mt_srand() with MT_RAND_PHP as the second parameter.

Ver también

  • mt_rand() - Generate a random value via the Mersenne Twister Random Number Generator
  • mt_getrandmax() - Show largest possible random value
  • srand() - Seed the random number generator