mt_srand

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

mt_srandSemeia o Gerador de Números Aleatórios Mersenne Twister

Descrição

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

Semeia o gerador de números aleatórios com seed ou com um valor aleatório se nenhum seed for fornecido.

Note: Não é necessário inicializar o gerador de números aleatórios com srand() ou mt_srand(), pois isso é feito automaticamente.

Caution

Como o mecanismo Mt19937 (“Mersenne Twister”) aceita apenas um único inteiro de 32 bits como semente, o número de sequências aleatórias possíveis é limitado a apenas 232 (ou seja, 4.294.967.296), embora o Mt19937 possua um gigantesco período de 219937-1.

Ao depender da geração aleatória implícita ou explícita de sementes, as duplicações aparecerão muito mais cedo. Sementes duplicadas são esperadas com probabilidade de 50% depois de menos de 80.000 sementes geradas aleatoriamente de acordo com o problema do aniversário. Uma probabilidade de 10% de uma semente duplicada acontece depois de gerar aleatoriamente cerca de 30.000 sementes.

Isso torna o Mt19937 inadequado para aplicações em que sequências duplicadas não devem ocorrer com mais do que uma probabilidade desprezível. Se a geração reproduzível de sementes for necessária, ambos os mecanismos Random\Engine\Xoshiro256StarStar e Random\Engine\PcgOneseq128XslRr64 suportam sementes muito maiores que são improváveis de colidir aleatoriamente. Se a reprodutibilidade não for necessária, o mecanismo Random\Engine\Secure fornece aleatoriedade criptograficamente segura.

Parâmetros

seed

Preenche o estado com valores gerados com um gerador congruente linear que foi propagado com seed interpretado como um número inteiro sem sinal de 32 bits.

Se seed for omitido ou null, um número inteiro aleatório e sem sinal de 32 bits será usado.

mode

Use uma das constantes a seguir para especificar a implementação do algoritmo a ser usado.

  • MT_RAND_MT19937: A implementação correta do Mt19937, disponível a partir do PHP 7.1.0.
  • MT_RAND_PHP Usa uma implementação incorreta do Mersenne Twister que foi usada como padrão até o PHP 7.1.0. Este modo está disponível para compatibilidade com versões anteriores.
Warning

Este recurso tornou-se DEFASADO a partir do PHP 8.3.0. O uso deste recurso é fortemente desencorajado.

Valor Retornado

Nenhum valor é retornado.

Registro de Alterações

Versão Descrição
8.3.0 seed agora é anulável.
7.1.0 srand() foi transformado em um apelido de mt_srand().
7.1.0 mt_rand() foi atualizado para usar a versão fixa e correta do algoritmo Mersenne Twister. Para voltar ao comportamento antigo, use mt_srand() com MT_RAND_PHP como segundo parâmetro.

Veja Também

  • mt_rand() - Gera um valor aleatório através do Gerador de Números Aleatórios Mersenne Twister
  • mt_getrandmax() - Mostra o maior valor aleatório possível
  • srand() - Semeia o gerador de números aleatórios