W3docs

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:

php— editable, runs on the server

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() ou random_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() e mt_rand() geralmente são mais convenientes do que escalar lcg_value() manualmente.
  • Para conhecer o limite superior que esses geradores podem retornar, consulte getrandmax() e mt_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.

Prática

Prática
O que a função lcg_value() no PHP faz?
O que a função lcg_value() no PHP faz?
Was this page helpful?