Skip to main content
🟢 Beginner

Gerador de Números Aleatórios

Gere números aleatórios dentro de um intervalo. Perfeito para jogos, decisões e estatísticas. Calculadora online gratuita com resultados instantâneos.

O que é um Gerador de Números Aleatórios?

Um gerador de números aleatórios (RNG) é uma ferramenta ou algoritmo que produz números sem qualquer padrão discernível — cada saída é estatisticamente independente das saídas anteriores, com cada valor na faixa igualmente provável de aparecer. Números aleatórios são fundamentais para estatística, jogos, criptografia, simulação científica e programação de computadores.

A verdadeira aleatoriedade vem de fenômenos físicos que são inerentemente imprevisíveis: decaimento radioativo, ruído atmosférico, ruído térmico em circuitos eletrônicos ou eventos de túnel quântico. Os RNGs de hardware medem esses fenômenos para produzir fluxos de bits genuinamente aleatórios. Serviços como o random.org coletam ruído atmosférico de receptores de rádio para fornecer números aleatórios verdadeiros.

Números gerados por computador são tecnicamente pseudoraleatórios — são sequências determinísticas que parecem aleatórias, mas estão completamente determinadas por um valor inicial chamado semente. Dada a mesma semente, um gerador de números pseudoraleatórios (PRNG) produz a mesma sequência exata. Isso é, na verdade, útil para a reprodutibilidade em simulações científicas: defina a semente, registre-a e você pode reproduzir seus resultados mais tarde.

Como os Geradores de Números Pseudoraleatórios Funcionam

Os PRNGs modernos usam algoritmos matemáticos para gerar sequências com propriedades estatísticas excelentes. O algoritmo mais amplamente usado é o Mersenne Twister (MT19937), desenvolvido por Matsumoto e Nishimura em 1997. Ele tem um período de 2^19937 − 1 (um número com quase 6.000 dígitos) antes de repetir, passa em todos os testes estatísticos padrão para aleatoriedade e é o gerador de números aleatórios padrão em Python, PHP, Ruby, R e muitos outros idiomas.

Algoritmos mais novos incluem xoshiro/xoroshiro (extremamente rápido, pequeno estado) e PCG (Gerador Congruencial Permutado) (excelente qualidade estatística com pequeno estado). Para aplicações criptográficas, esses PRNGs padrão são insuficientes — PRNGs criptográficos seguros (CSPRNGs) são necessários porque os PRNGs padrão podem ser previstos se um atacante conhecer o suficiente saídas.

Os navegadores de web fornecem acesso a um CSPRNG através da API crypto.getRandomValues(), que esse calculadora usa para gerar números aleatórios. Isso é significativamente mais seguro do que Math.random(), que usa um simples PRNG e nunca deve ser usado em aplicações sensíveis à segurança.

AlgoritmoPeríodoVelocidadeCriptográfico?Usado em
Math.random()Dependente da implementaçãoMuito rápidoNãoJS do navegador (não criptográfico)
Mersenne Twister2^19937 − 1RápidoNãoPython, R, MATLAB
xoshiro256**2^256 − 1Muito rápidoNãoRust, .NET, Julia
PCG-642^128RápidoNãoNumPy, muitos idiomas
ChaCha20RápidoSimLinux /dev/urandom, TLS
FortunaMédioSimmacOS, iOS, Windows

Uso Comum de Números Aleatórios

Jogos e Entretenimento: Lançamento de dados, baralho de cartas, geração de níveis procedurais, sistemas de caça ao tesouro, randomização de comportamento de NPCs. A experiência inteira de jogos roguelike (Nethack, Spelunky, Hades) depende de uma boa qualidade de aleatoriedade que parece justa e imprevisível.

Lotterias e Rifa: Seleção aleatória para prêmios, sorteios, seleção de júri, sorteio de draft e qualquer alocação justa de uma recursos limitado entre competidores. Seleção verdadeiramente aleatória garante ausência de viés.

Simulação Científica (Métodos de Monte Carlo): Números aleatórios impulsionam simulações de Monte Carlo, que usam amostragem aleatória repetida para aproximar resultados matemáticos complexos. Aplicações incluem estimativa de π, preços de derivativos financeiros, modelagem de reações nucleares, previsão do tempo e estudos de interação de medicamentos.

Estatística e Pesquisa: Amostragem aleatória para pesquisas, atribuição aleatória em ensaios clínicos (ensaios controlados randomizados), geração de amostras bootstrap para intervalos de confiança e validação cruzada em aprendizado de máquina todos requerem números aleatórios.

Criptografia e Segurança: Geração de chaves para criptografia, geração de tokens de sessão, desafios CAPTCHA, senhas de um tempo (OTP/2FA), valores de sal para hash de senhas e não-casos em protocolos criptográficos todos requerem boa qualidade de aleatoriedade. Aleatoriedade fraca em aplicações criptográficas pode ser catastrófica — levou a quebras de segurança reais.

Programação de Computador: Geração de dados de teste, teste de carga, fuzzing (encontrando bugs alimentando inputs aleatórios para software), atribuição A/B, shuffle de algoritmos (como a característica "shuffle" do Spotify) e testes de simulação.

Equidade e Expectativas Estatísticas

Um gerador de números aleatórios justo dá a cada valor na faixa uma probabilidade igual. Para uma faixa de 1–6 (como um dado), cada número deve aparecer aproximadamente 1/6 ≈ 16,67% do tempo em muitas jogadas. Mas em curtos períodos, as variações são normais e esperadas — isso é o que a probabilidade nos diz de fato.

A Lei dos Grandes Números afirma que à medida que o número de tentativas aumenta, as frequências observadas convergem para as probabilidades teóricas. Rolar um dado 12 vezes e você pode ver {1,3,5,6,2,1,4,3,2,6,5,4} — não exatamente 2 de cada número. Rolar 60.000 vezes e você verá muito perto de 10.000 de cada número. Essa convergência é garantida pela lei, mas padrões de curto prazo não.

A Falsa Conclusão do Apostador é a crença equivocada de que os resultados passados influenciam os futuros em eventos independentes aleatórios. Obter 5 caras seguidas não faz que a "caída" seja "devida". Cada lance é independente; a moeda não tem memória. Da mesma forma, um gerador de números aleatórios que acabou de produzir 7 não é menos provável de produzir 7 novamente na próxima chamada.

IntervaloProbabilidade por ValorFrequência Esperada (por 1000)Uso de Caso Típico
1–250%500Simulação de lance de moeda
1–616,67%167Simulação de rolagem de dado
1–1010%100Seleção de décil
1–521,92%19Baralho
1–1001%10Percentil/usagem geral
1–1.000.0000,0001%0,001Simulação de bilhete de loteria

Gerador de Números Aleatórios na Ciência: Métodos de Monte Carlo

Métodos de Monte Carlo usam amostragem aleatória para resolver problemas que são analiticamente difíceis ou impossíveis. Nomeado após o cassino de Monte Carlo (por motivos óbvios), esses métodos transformam problemas determinísticos difíceis em problemas probabilísticos solúveis por simulação.

Estimativa de π: Gere pontos aleatórios em um quadrado unitário (x,y cada um uniforme em [0,1]). Conta quantos caem dentro do círculo unitário (x² + y² ≤ 1). A razão é π/4. Com 1 milhão de pontos aleatórios, você pode estimar π para cerca de 3–4 casas decimais. Isso não é uma forma eficiente de calcular π, mas demonstra de forma bela o poder da aleatoriedade.

Modelagem Financeira: O preço de opção Black-Scholes e os cálculos de Valor de Risco simulam milhares de possíveis trajetórias de preço futuras usando números aleatórios. Cada trajetória de simulação representa uma possível futura. A distribuição de resultados em milhões de simulações dá a distribuição de probabilidade de retornos do portfólio.

Desenvolvimento de Medicamentos: Simulações de Monte Carlo modelam interações de moléculas de medicamentos, prevendo como provável é que um candidato a medicamento se ligue a uma proteína-alvo. Isso reduz o número de experimentos laboratoriais necessários, economizando bilhões de dólares em desenvolvimento farmacêutico.

Gerando Números Aleatórios Únicos (Sem Substituição)

Às vezes você precisa de números aleatórios que não sejam repetidos — por exemplo, embaralhar um baralho de cartas, atribuir participantes a grupos ou selecionar vencedores de loteria. Isso é chamado de amostragem sem substituição (ao contrário da amostragem com substituição, onde o mesmo valor pode aparecer várias vezes).

O algoritmo padrão para isso é o baralho de Fisher-Yates (também conhecido como baralho de Knuth). Para um array de n elementos: comece do último elemento, troque-o com um elemento aleatório escolhido do array inteiro (incluindo ele mesmo), em seguida, vá para o segundo elemento, troque com um elemento aleatório dos que restam, e continue. O resultado é uma permutação uniformemente aleatória em O(n) tempo.

Para gerar k números aleatórios únicos de uma faixa [min, max]: crie um array com todos os valores na faixa, aplique Fisher-Yates, pegue os primeiros k elementos. Isso garante que cada combinação de k valores seja igualmente provável — uma amostra verdadeiramente uniforme sem substituição.

Números Aleatórios na Tomada de Decisões do Dia a Dia

Numeradores aleatórios são surpreendentemente úteis para decisões práticas do dia a dia:

Quebrar Empates: Quando existem duas opções igualmente boas, um número aleatório pode tomar a decisão sem pensar demais. Pesquisas sugerem que quando as pessoas deliberam demais sobre escolhas verdadeiramente equivalentes, elas introduzem viés que as torna menos felizes com o resultado do que se elas tivessem escolhido aleatoriamente.

Agendamento e Planejamento: Rotinas de sorteio aleatório garantem igualdade ao longo do tempo. Quem pega em primeiro lugar em um draft de fantasia, quem recebe a turnê preferida, qual tópico é discutido primeiro em uma reunião — a atribuição aleatória elimina favoritismo e percepções de injustiça.

Aprendizado e Prática: Alunos que usam cartões de flash beneficiam-se de uma ordem aleatória — ela impede o aprendizado de "pistas de contexto" (sabendo a resposta para o cartão 15 porque você acabou de responder o cartão 14). A intercalação aleatória de problemas de prática é uma técnica comprovada (prática intercalada) que fortalece a retenção a longo prazo em comparação com a prática bloqueada.

Inspiração Criativa: Escritores, artistas e músicos usam geradores de palavras aleatórias, geradores de prompts e ferramentas de restrição aleatórias para superar bloqueios criativos. Restrições impostas aleatoriamente muitas vezes forçam soluções criativas inesperadas e interessantes.

Perguntas Frequentes

Este gerador é realmente aleatório?

Ele usa a API crypto.getRandomValues() do seu navegador, que é um gerador de números pseudorandomos criptograficamente seguro (CSPRNG). Para jogos, decisões, estatísticas e sorteios, isso é indistinguível da verdadeira aleatoriedade. Para aleatoriedade absoluta (de fenômenos físicos), use geradores de hardware ou serviços como random.org.

Posso gerar números aleatórios sem repetições?

Sim — isso é chamado de amostragem sem substituição. O calculador usa o algoritmo de embaralhamento de Fisher-Yates: gere todos os valores na faixa, embaralhe-os aleatoriamente, retorne o primeiro N. Isso garante que cada valor apareça no máximo uma vez e que todas as combinações sejam igualmente prováveis.

O que é a probabilidade de obter o mesmo número duas vezes?

Com substituição (modo padrão), para uma faixa de N valores, a probabilidade de obter o mesmo valor em dois sorteios consecutivos é 1/N. Para a faixa 1–100: 1% por par. Com o tempo, repetições são esperadas e normais. Com o "sem repetições" modo, duplicatas consecutivas são impossíveis por design.

Posso usar isso para escolher números de loteria?

A absoluto. Defina a faixa para corresponder à sua loteria (por exemplo, 1–49) e ative "sem repetições" para escolher números únicos. Cada combinação é igualmente provável — nenhum número ou combinação é mais ou menos provável de ganhar. A loteria em si é aleatória, então qualquer método de seleção é igualmente válido.

O que é uma semente em geração de números aleatórios?

Uma semente é o valor inicial para um gerador de números pseudorandomos. A mesma semente sempre produz a mesma sequência. Isso é útil para simulações reprodutíveis — defina a semente, execute sua simulação, registre a semente e você pode reproduzir a mesma sequência aleatória mais tarde para verificação ou depuração.

Como escolher um item aleatório de uma lista?

Numere seus itens 1 até N, em seguida, gere um número inteiro aleatório de 1 a N. O item correspondente é sua seleção aleatória. Por exemplo, para selecionar aleatoriamente de 7 membros de equipe, gere um número inteiro aleatório de 1 a 7. Cada pessoa tem uma chance de 1/7 ≈ 14,3% de seleção.

É Math.random() em JavaScript realmente aleatório?

Não. Math.random() é um PRNG simples sem garantias de segurança. É adequado para jogos e aplicações não sensíveis, mas nunca deve ser usado para fins criptográficos (geração de chaves, tokens, senhas). Para aplicações de segurança, use sempre crypto.getRandomValues() ou um CSPRNG de servidor.

O que é a diferença entre um PRNG e um CSPRNG?

Um PRNG (Gerador de Números Pseudorandomos) é determinístico e rápido, mas previsível se você souber o suficiente sobre seu estado. Um CSPRNG (Gerador de Números Pseudorandomos Criptograficamente Seguro) adiciona a propriedade de que os resultados são indistinguíveis da verdadeira aleatoriedade mesmo se um atacante observar alguns resultados. CSPRNGs são necessários para senhas, chaves e tokens.

O que é uma simulação de Monte Carlo?

Uma simulação de Monte Carlo usa grandes números de amostras aleatórias para estimar quantidades complexas. Exemplo: estimar π colocando pontos aleatórios em um quadrado contendo um círculo — a razão de pontos dentro do círculo a pontos totais converge a π/4. Métodos de Monte Carlo são usados em finanças, física, engenharia e estatística.

Os geradores de números aleatórios podem ser viciados?

Geradores de números aleatórios de baixa qualidade podem exibir vício — alguns valores aparecendo mais frequentemente do que outros, ou correlações entre valores consecutivos. A qualidade é medida por testes estatísticos (NIST Test Suite, TestU01 BigCrush). Algoritmos modernos como Mersenne Twister, PCG e xoshiro passam em todos os testes padrão e são não viciados para fins práticos.

Números Aleatórios em Jogos e Geração Procedural

Jogos de vídeo são construídos sobre a aleatoriedade. Da geração de blocos aleatórios no mundo de criação do Minecraft à mistura do comportamento de IA de inimigos, a aleatoriedade de alta qualidade cria experiências reprodutíveis e imprevisíveis. A geração de conteúdo procedural (PCG) usa números aleatórios com restrições matemáticas para criar conteúdo vasto com esforço manual mínimo — os 18 quintilhões de planetas em No Man's Sky foram todos gerados proceduralmente a partir de sementes aleatórias.

Jogos roguelike como Nethack, Spelunky e Hades definem o gênero através da geração de níveis procedurais. Cada corrida gera um labirinto diferente, colocação de inimigos e distribuição de itens. O jogo semeia essa aleatoriedade para que as corridas sejam justas (o RNG não decide aleatoriamente que você morra imediatamente) enquanto permanece imprevisível. Muitos roguelikes exibem a semente para que os jogadores possam reexecutar uma corrida idêntica ou compartilhar sementes interessantes com outros.

Jogos de mesa usaram aleatoriedade física (dados, cartas embaralhadas, rolos) por séculos. Equivalentes digitais devem emular essas distribuições exatamente. Uma rolagem de um dado de 6 lados usa uma distribuição uniforme sobre {1,2,3,4,5,6}. Uma extração de uma baralho embaralhado usa permutação aleatória. Alguns jogos usam piscinas de dados (rolar múltiplos dados, pegar o maior) ou dados com vantagem/desvantagem — exigindo um design estatístico cuidadoso para alcançar distribuições de probabilidade intencionais.

Gerando Outras Distribuições a Partir de Números Aleatórios Uniformes

A maioria dos RNGs produz números uniformemente distribuídos entre 0 e 1 (ou inteiros em um intervalo). Muitas vezes precisamos de números aleatórios que sigam outras distribuições — normal, exponencial, Poisson, etc. Essas podem ser derivadas de números aleatórios uniformes usando métodos de transformação.

O Transformada de Box-Muller gera números aleatórios normalmente distribuídos a partir de dois números aleatórios uniformes U₁ e U₂: Z₁ = √(−2ln(U₁)) × cos(2πU₂) e Z₂ = √(−2ln(U₁)) × sin(2πU₂). Ambos Z₁ e Z₂ seguem a distribuição normal padrão N(0,1). Escala com Z × σ + μ para obter N(μ,σ²).

A Método de Transformada Inversa usa a inversa da função de distribuição cumulativa (CDF). Para uma distribuição exponencial com taxa λ: X = −ln(1−U)/λ onde U é uniforme em [0,1]. Isso transforma diretamente uma variável aleatória uniforme em uma variável exponencialmente distribuída. O método funciona para qualquer distribuição com uma CDF invertível analiticamente.

Testes Estatísticos para Aleatoriedade

Como verificamos que um gerador de números aleatórios é realmente aleatório? Os testes estatísticos verificam se uma sequência de números exibe padrões que seriam improváveis em uma sequência verdadeiramente aleatória. O Conjunto de Testes Estatísticos da NIST contém 15 testes usados para avaliar RNGs para aplicações criptográficas. Os testes-chave incluem:

Teste de Frequência (Monobit): Verifica se 0s e 1s ocorrem com igual frequência na representação binária dos números gerados. Uma moeda viciada que cai com cara 60% das vezes falharia este teste.

Teste de Sequências: Verifica o número de bits consecutivos idênticos (sequências). Muitas sequências longas do mesmo bit indicam um padrão não aleatório. Uma sequência verdadeiramente aleatória tem uma distribuição previsível de comprimentos de sequência.

Teste Serial: Verifica se pares, tríades ou quadríades de valores ocorrem com igual frequência. Se o gerador produz a sequência 1,2,3,4,5,6,1,2,3,4,5,6... ele passa no teste de frequência, mas falha no teste serial — os pares são não aleatórios.

Teste EstatísticoO que Ele DetectaConjunto de Testes da NIST?
Teste de Frequência (Monobit)Frequência desigual de 0/1Sim
Teste de SequênciasMuitas/féw sequências consecutivas idênticasSim
AutocorrelaçãoValores correlacionados com valores anterioresSim
Chi-SquareDistribuição não uniformeSim (teste de frequência)
Espaçamento de AniversárioEspaçamento regular entre valoresVia TestU01
DiehardMúltiplos testes de padrãoSuite separada

O TesteU01 "BigCrush" é considerado o teste mais rigoroso prático — ele executa 106 testes e rejeita muitos algoritmos que passam em conjuntos de testes menores. Algoritmos modernos como PCG e xoshiro passam no BigCrush; algoritmos mais antigos como o gerador linear congruencial usado em bibliotecas C antigas falham vários testes e não devem ser usados em aplicações de qualidade.

Usando Este Gerador de Números Aleatórios

Defina os valores mínimo e máximo para definir sua faixa. Defina "quantos" para gerar múltiplos de números de uma vez. Ative a opção "sem repetir" para gerar uma lista de números únicos (amostragem sem substituição) — ideal para sorteios de loteria, sorteios de cartas ou atribuição de participantes sem repetição. A sequência gerada usa a API de números aleatórios criptográficos do navegador para resultados de alta qualidade adequados para qualquer propósito não de segurança. Para uso de loteria, gere números iguais ao número de escolhas necessárias dentro da faixa da loteria. Para uso de rifa, atribua números sequenciais às inscrições e sorteie o número correspondente. Os resultados são gerados novamente a cada clique do botão — os resultados anteriores não são armazenados ou rastreados.