lcg_value()
Aprenda sobre a função lcg_value() no PHP, usada para gerar números pseudoaleatórios com o gerador linear congruente (LCG).
A função lcg_value() no PHP é uma função nativa que gera um float pseudoaleatório usando o algoritmo do gerador linear congruente (LCG). Ela não recebe parâmetros e utiliza uma semente interna fixa para produzir sua sequência. Esta página explica o que a função retorna, como utilizá-la, como escalar sua saída para um intervalo e quando optar por uma alternativa mais segura.
O Que É a Função lcg_value()?
Um gerador linear congruente é um algoritmo clássico e leve para produzir uma sequência de números que parecem aleatórios, mas são totalmente determinados por uma semente inicial. O PHP encapsula isso na lcg_value(), que retorna um float no intervalo (0, 1) — ou seja, maior que 0 e menor que 1.
Duas características são relevantes na prática:
- Sem argumentos. Ela é chamada como
lcg_value()com parênteses vazios; passar argumentos não tem efeito. - Resultado float. Sempre retorna um
float, nunca um inteiro. Para obter um inteiro, você escala o resultado manualmente (mostrado abaixo).
Como Usar a Função lcg_value()
Usar a função lcg_value() no PHP é simples. Veja um exemplo básico:
Neste exemplo, chamamos a função lcg_value() para gerar um número pseudoaleatório. Em seguida, armazenamos o resultado em uma variável e o exibimos na tela.
Gerando Números em um Intervalo Específico
Como lcg_value() retorna um float entre 0 e 1, você pode escalá-lo para se adequar a um intervalo desejado ou gerar inteiros:
<?php
// Generate a random integer between 1 and 100
$min = 1;
$max = 100;
$random_int = (int)($min + lcg_value() * ($max - $min + 1));
echo $random_int;
?>Notas Importantes
- Não é Criptograficamente Segura: O algoritmo LCG é previsível e não deve ser usado para tarefas sensíveis à segurança, como geração de tokens, senhas ou IDs de sessão. Para fins criptográficos, use
random_int()ourandom_bytes(). - Semente Fixa: A função utiliza uma semente interna fixa, o que significa que a sequência de números será idêntica em diferentes execuções do script, a menos que o processo PHP seja reiniciado.
- Intervalo é exclusivo: O valor retornado nunca é exatamente 0 ou 1, portanto a fórmula de escalonamento para inteiros acima pode incluir com segurança os dois extremos do intervalo
$min–$max. - Descontinuada no PHP 8.4: A partir do PHP 8.4,
lcg_value()está descontinuada em favor de\Random\Randomizer::getFloat(). Ainda funciona, mas emite um aviso de descontinuação, portanto prefira a API mais nova em código novo.
lcg_value() vs. Outras Funções de Aleatoriedade
lcg_value() é uma das várias funções auxiliares de aleatoriedade no PHP. Escolha com base no que você precisa:
- Para inteiros aleatórios em um intervalo,
rand()emt_rand()geralmente são mais convenientes do que escalarlcg_value()manualmente. - Para conhecer o limite superior que esses geradores podem retornar, consulte
getrandmax()emt_getrandmax(). - Para sequências reproduzíveis durante testes, defina a semente do gerador Mersenne Twister com
mt_srand(). - Para aleatoriedade sensível à segurança, prefira
random_int()em vez de todas as opções acima.
Conclusão
A função lcg_value() oferece uma forma simples de gerar floats pseudoaleatórios no PHP. Embora seja útil para simulações básicas ou aplicações não relacionadas à segurança, o desenvolvimento moderno em PHP normalmente favorece random_int() para melhor aleatoriedade e segurança. Esperamos que este guia ajude você a entender como usar lcg_value() de forma eficaz em seus projetos.