mt_srand()
Conheça a função mt_srand() no PHP, usada para inicializar o gerador de números aleatórios utilizado por mt_rand().
Hoje, vamos discutir a função mt_srand() em PHP. Esta função inicializa o gerador de números aleatórios utilizado por mt_rand(). Nota: mt_srand() está obsoleta desde o PHP 8.1 e foi removida no PHP 8.4. Para aplicações PHP modernas, use random_int() ou random_bytes() em seu lugar.
O que é a Função mt_srand()?
A função mt_srand() inicializa o gerador de números aleatórios Mersenne Twister com um valor de semente específico. Quando uma semente fixa é fornecida, mt_rand() produz uma sequência previsível e reproduzível de números. Esse comportamento determinístico é útil principalmente para testes, depuração ou cenários em que uma saída aleatória consistente é necessária.
Como Usar a Função mt_srand()
Usar mt_srand() é simples. Veja um exemplo básico:
Como usar a função mt_srand() em PHP?
Neste exemplo, mt_srand(12345) define a semente do gerador. As chamadas subsequentes a mt_rand() produzirão a mesma saída em diferentes execuções porque a semente permanece constante. O resultado é armazenado em $result e impresso na tela.
Nota de compatibilidade de versão: No PHP 8.1+, este código acionará um aviso de obsolescência. Para PHP 8.4+ e projetos modernos, substitua mt_srand()/mt_rand() por random_int() para geração de números aleatórios segura e suportada.
O Substituto Moderno
mt_srand() existe para tornar a aleatoriedade reproduzível ao fixar uma semente. As funções modernas, criptograficamente seguras, intencionalmente não podem ser inicializadas com uma semente — você obtém valores imprevisíveis a cada vez:
<?php
// Modern, secure replacement — no seeding required
$result = random_int(1, 100); // a secure random integer between 1 and 100 (inclusive)
echo $result;
?>Como random_int() utiliza a fonte criptograficamente segura do sistema operacional, você deve usá-la para qualquer coisa sensível à segurança (tokens, senhas, códigos de uso único). A desvantagem é que você perde a reprodutibilidade: não há semente a definir, portanto o mesmo código nunca produz o mesmo número duas vezes.
Se você realmente precisar de uma sequência reproduzível (por exemplo, gerar os mesmos dados de teste em cada execução) no PHP 8.2+, use o \Random\Randomizer baseado em objetos e com suporte a semente, com o motor Mt19937, em vez do mt_srand() obsoleto.
Conclusão
Embora mt_srand() forneça sequências aleatórias determinísticas para código legado ou necessidades específicas de teste, ela está obsoleta no PHP 8.1 e foi removida no PHP 8.4. O desenvolvimento moderno em PHP deve depender de random_int() ou random_bytes() para geração de números aleatórios segura e suportada. Esperamos que este guia esclareça o contexto histórico e o uso adequado de mt_srand() em ambientes PHP mais antigos.