W3docs

rand()

Conheça a função rand() no PHP, usada para gerar números inteiros aleatórios com ou sem intervalo definido.

A função rand() no PHP gera um número inteiro pseudoaleatório. Este capítulo aborda sua sintaxe, como funcionam os argumentos de intervalo opcionais, a diferença entre rand() e a função mais rápida mt_rand(), por que você nunca deve usar nenhuma delas para segurança, e alguns padrões práticos como lançar um dado ou selecionar um elemento aleatório de um array.

O que a Função rand() Faz

rand() é uma função nativa do PHP que retorna um número inteiro aleatório. Sem argumentos, ela retorna um valor entre 0 e getrandmax() (o maior valor que o gerador pode produzir — pelo menos 32767). Quando você passa $min e $max, ela retorna um inteiro no intervalo inclusivo $min ≤ n ≤ $max.

Ela produz números pseudoaleatórios: valores que parecem aleatórios, mas são gerados por um algoritmo determinístico a partir de uma semente interna. Isso é adequado para jogos, amostragem e dados de teste, mas não para situações em que a previsibilidade é um risco (veja Segurança abaixo).

Sintaxe

rand(): int
rand(int $min, int $max): int
ParâmetroDescrição
$minOpcional. O menor valor a retornar. O padrão é 0.
$maxOpcional. O maior valor a retornar. O padrão é getrandmax().

$min e $max são inclusivos, portanto rand(1, 6) pode retornar 1, 6 ou qualquer valor entre eles. Se você passar $min maior que $max, o PHP 8 lança um ValueError.

Uso Básico

php— editable, runs on the server

Aqui chamamos rand() com um intervalo, armazenamos o resultado em $result e o exibimos. Execute o exemplo algumas vezes e você obterá um número diferente a cada execução.

Casos de Uso Comuns

Alguns padrões que você usará com frequência:

<?php
// 1. Roll a six-sided die
$die = rand(1, 6);

// 2. Pick a random element from an array
$colors = ['red', 'green', 'blue'];
$color  = $colors[rand(0, count($colors) - 1)];

// 3. A coin flip
$side = rand(0, 1) === 0 ? 'heads' : 'tails';

echo "Die: $die, Color: $color, Coin: $side";
?>

Para selecionar um elemento de um array, o PHP também oferece o auxiliar dedicado array_rand(), que é mais claro do que calcular o índice manualmente.

rand() vs mt_rand()

mt_rand() usa o algoritmo Mersenne Twister. É mais rápido e possui melhores propriedades estatísticas do que o rand() legado, sendo a opção preferida para uso geral. Os dois compartilham a mesma assinatura:

<?php
$a = rand(1, 100);     // legacy generator
$b = mt_rand(1, 100);  // Mersenne Twister — recommended
echo "$a and $b";
?>

Desde o PHP 7.1, rand() é internamente um alias de mt_rand(), então eles se comportam da mesma forma no PHP moderno. Prefira mt_rand() em código novo para maior clareza. Seu complemento mt_getrandmax() informa o maior valor que ele pode retornar.

Semeadura

Você pode semear o gerador com srand() (ou mt_srand() para mt_rand()). Semear com um valor fixo torna a sequência reproduzível — útil para testes:

<?php
srand(42);
echo rand(1, 100), "\n"; // same output every run for seed 42
?>

Desde o PHP 4.2, você quase nunca precisa chamar srand() manualmente — o PHP semeia o gerador automaticamente no primeiro uso.

Quando Não Usar rand()

rand() e mt_rand() não são criptograficamente seguros. Sua saída é previsível, portanto nunca os use para senhas, tokens, IDs de sessão, links de redefinição de senha ou qualquer coisa sensível à segurança. Para esses casos, use um CSPRNG:

<?php
$secureInt   = random_int(1, 100);     // cryptographically secure integer
$secureBytes = random_bytes(16);       // 16 random bytes
echo $secureInt, ' ', bin2hex($secureBytes);
?>

random_int() tem a mesma assinatura (min, max) que rand(), portanto normalmente é um substituto direto quando a segurança importa.

Resumo

  • rand($min, $max) retorna um número inteiro pseudoaleatório em um intervalo inclusivo; sem argumentos, abrange de 0 a getrandmax().
  • Prefira mt_rand() para uso geral — é mais rápido e melhor distribuído (e rand() é um alias para ele desde o PHP 7.1).
  • Use random_int() / random_bytes() sempre que o valor precisar ser imprevisível.

Para mais informações sobre valores numéricos e auxiliares matemáticos, consulte PHP Numbers e PHP Math.

Prática

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