Como Gerar Números Aleatórios em PHP com a Função rand()

Função rand() no PHP: Gerando Números Aleatórios e Jogos

Você já viu aqueles captchas malucos na internet? Ou sistemas que geram códigos de confirmação (tokens) por SMS? E aquelas senhas temporárias automáticas?

Gerar valores aleatórios é uma habilidade fundamental no mundo da programação. E para a nossa alegria, o lindo e maravilhoso PHP já possui uma função nativa que faz tudo isso por nós de maneira muito simples e automática: a função rand().

1. O Básico: A Função rand() e getrandmax()

Para testar o poder dessa função, abra o seu ambiente PHP e simplesmente digite:

<?php
    echo rand();
?>

Agora, fique atualizando a página. Várias e várias vezes. Você vai notar que a cada refresh, um número inteiro diferente aparece na sua tela.

Mas até onde esse número pode ir? Por padrão, se você não disser nada, a função rand() vai gerar um número que vai de 0 até o valor máximo suportado pelo sistema, que pode ser descoberto usando a função getrandmax(). Em muitos sistemas Windows, por exemplo, esse limite é 2147483647!

2. Definindo os seus próprios Intervalos (Min e Max)

A função rand() é extremamente versátil. Na maioria das vezes, não queremos um número gigantesco de bilhões, queremos um número dentro de uma regra específica. Para isso, basta passar dois parâmetros: valor mínimo e valor máximo.

  • 🪙 Cara ou Coroa (Par ou Ímpar):
    rand(0, 1) vai retornar estritamente ou 0, ou 1.
  • 🎲 Lançamento de um Dado comum:
    rand(1, 6) vai retornar 1, 2, 3, 4, 5 ou 6.
  • 💯 Sorteio de 1 a 100:
    rand(1, 100).

3. E se eu quiser números quebrados (Decimais)?

A função rand() retorna sempre números inteiros. Mas e se você estiver programando a inteligência artificial de um jogo e precisar de um número flutuante (decimal) entre 0.0 e 1.0?

A lógica é usar a matemática a seu favor! Basta pedir um número aleatório inteiro maior e dividi-lo:

<?php
    // Gera um número entre 0 e 10 (ex: 7) e divide por 10. Resultado = 0.7
    $decimal = rand(0, 10) / 10;
    
    // Quer duas casas decimais? (Ex: 0.45)
    $decimal_preciso = rand(0, 100) / 100;
?>

🛡️ Dica Pro: rand() vs random_int()

A função rand() é excelente para jogos, sorteios simples e brincadeiras. Porém, se você estiver gerando senhas reais, tokens financeiros ou criptografia, utilize a função random_int(min, max). Ela é criptograficamente segura e impede que hackers prevejam qual será o próximo número gerado!

4. Exercício Prático: O Jogo da Adivinhação

Agora que você já domina a geração de dados, que tal criar o seu primeiro jogo em PHP?

🎮 O Desafio:

Crie um script web simples. O PHP vai gerar um número secreto entre 1 e 10 usando a função rand(1, 10), e você terá um formulário onde o usuário tentará adivinhar que número foi esse.

  • Se o usuário acertar: Mostre uma mensagem de vitória (ex: "Você acertou! O número era X!").
  • Se o usuário errar: Mostre uma mensagem de derrota (ex: "Você errou! O número sorteado foi Y!").

Consegue fazer sozinho? Tente primeiro!
→ Clique aqui para ver o Gabarito e como fazer esse jogo passo a passo

Para aprofundar seus estudos técnicos, consulte o manual oficial em: php.net/manual/pt_BR/function.rand.php

Gabarito Completo na Apostila 📚

Esse jogo e dezenas de outros projetos práticos, exercícios resolvidos e códigos fonte estão disponíveis para download imediato na nossa apostila oficial de PHP.

Baixar Apostila Completa de PHP

Nenhum comentário: