getrandmax()
Aprenda a usar a função getrandmax() em PHP para obter o valor máximo aleatório que pode ser gerado pela função rand().
A função getrandmax() do PHP retorna o maior inteiro que a função rand() pode produzir quando chamada sem argumentos. Conhecer esse limite superior permite escalar com segurança valores aleatórios para um intervalo próprio, razão pela qual getrandmax() é mais útil em conjunto com rand() do que isoladamente.
Sintaxe
getrandmax(): intgetrandmax() não recebe parâmetros e retorna um int. No PHP moderno (7.1 e posterior), retorna consistentemente 2147483647 (o valor máximo de um inteiro com sinal de 32 bits, 2^31 - 1), independentemente do sistema operacional ou da arquitetura. Antes do PHP 7.1, o valor podia diferir entre plataformas, o que é uma das razões pelas quais a família mt_rand(), mais portável, é atualmente preferida.
Como usar getrandmax()
Como não recebe argumentos, chamar a função é simples:
Isso imprime 2147483647 em uma instalação moderna do PHP.
Escalando rand() para um intervalo personalizado
O principal uso prático de getrandmax() é converter a saída de rand() em uma fração ou em um intervalo menor. Dividir rand() por getrandmax() produz um float entre 0 e 1, que pode ser multiplicado para caber em qualquer intervalo desejado:
<?php
// A random float between 0 and 1
$fraction = rand() / getrandmax();
// Scale that fraction into the range 0–100
$scaled = $fraction * 100;
echo "Fraction: " . ($fraction >= 0 && $fraction <= 1 ? "in [0, 1]" : "out of range") . "\n";
echo "Scaled value is between 0 and 100: " . ($scaled >= 0 && $scaled <= 100 ? "yes" : "no") . "\n";
?>Aqui a saída confirma que a fração permanece dentro de [0, 1] e o valor escalado dentro de [0, 100]. Como os números exatos são aleatórios, verificar o intervalo (em vez de um valor fixo) é a forma confiável de validar a lógica.
getrandmax() vs. mt_getrandmax()
No PHP 7.0+, rand() e mt_rand() compartilham o mesmo gerador de números aleatórios subjacente, portanto getrandmax() e mt_getrandmax() retornam o mesmo valor. Para código novo, prefira:
mt_rand()para números pseudoaleatórios mais rápidos e de melhor qualidade.random_int()quando forem necessários valores criptograficamente seguros (senhas, tokens, códigos de segurança).
Use rand() e getrandmax() principalmente ao trabalhar com código legado que já os utiliza.
Conclusão
A função getrandmax() informa o limite superior de rand(), um valor fixo de 2147483647 no PHP moderno. Seu real valor está em ser o denominador ao escalar inteiros aleatórios em floats ou intervalos personalizados. Para novos projetos, prefira a família mt_rand() ou random_int() para aleatoriedade sensível à segurança.