Gerador de número aleatório (sortear número)
Sortear número em qualquer intervalo com resultado justo e sem viés, usando o
gerador criptográfico do seu navegador (crypto.getRandomValues()) — com opção de
não repetir, casas decimais e ordenação. Nada é enviado para a internet.
Última revisão: 2026-06-19.
Como funciona a aleatoriedade aqui
Cada número sai de crypto.getRandomValues(), a fonte aleatória
criptograficamente segura do navegador — a mesma entropia que o seu sistema
operacional usa para gerar chaves de criptografia. Ela não pode ser semeada, prevista nem repetida,
e é bem diferente do Math.random() que a maioria dos sites usa para sortear número.
Para números inteiros aplicamos amostragem por rejeição (rejection sampling):
sorteamos um valor de 32 bits e descartamos qualquer sorteio que caia na pequena faixa
“sobrando” que, de outro modo, deixaria alguns números um pouco mais prováveis do que
outros. O resultado é uma distribuição uniforme — todo valor do seu intervalo
tem exatamente a mesma chance, inclusive quando o intervalo não é uma potência de dois. Esse é
justamente o viés que a abordagem ingênua Math.random() × intervalo introduz em
silêncio.
Usos mais comuns
| Uso | Configuração sugerida |
|---|---|
| Sorteio / ganhador de promoção | Intervalo de 1 até o número de participantes, quantos = número de ganhadores, Únicos ligado |
| Rolar um dado | 1 a 6 (ou 1 a 20 para jogos de mesa e RPG) |
| Cara ou coroa | 0 a 1 (0 = cara, 1 = coroa) |
| Sorteio no estilo loteria | 1 a 60, quantos = 6, Únicos ligado |
| Amostra aleatória sem reposição | 1 até o tamanho da população, quantos = tamanho da amostra, Únicos ligado |
| Decimal aleatório (por exemplo 0–1) | Mínimo 0, máximo 1, casas decimais 2–4 |
Bom saber
- Justo para sorteios. Como a distribuição é uniforme e sem viés, cada participante tem a mesma chance — serve para promoções, sorteios de prêmio e amostragem.
- Únicos ou com repetição. Ligue Únicos para sortear números diferentes entre si (amostragem sem reposição); deixe desligado para permitir repetição (sorteios independentes).
- Limites do intervalo. Os valores são limitados entre −1.000.000.000 e 1.000.000.000, e até 1.000 números por vez.
- Privado. O sorteio acontece 100% no seu navegador — nada é enviado a um servidor, nada é registrado, e a página continua funcionando offline depois de carregada.
Como fazer um sorteio justo
Para sortear número de forma defensável em uma promoção, numere os participantes de 1 até N na ordem em que eles entraram (a lista de comentários, a planilha de inscrições, a lista de pedidos). Coloque o mínimo em 1, o máximo em N e informe em quantos a quantidade de ganhadores. Se houver mais de um ganhador, ligue Únicos: assim a mesma pessoa não é sorteada duas vezes. Sortear alguns nomes a mais como suplentes, na mesma rodada, evita ter que refazer o sorteio quando alguém não responde.
Para dar transparência, grave a tela durante o sorteio ou faça a rodada ao vivo com os participantes assistindo: como o resultado nasce no seu aparelho e nada trafega pela rede, não existe demora de servidor entre o clique e o número que aparece. Publicar a lista numerada antes de sortear é o que torna o processo verificável: quem quiser conferir consegue ligar o número sorteado à posição exata da lista. Uma dica prática: não refaça o sorteio porque o resultado “não pareceu aleatório”. Repetir até gostar do resultado é exatamente o que destrói a imparcialidade que a distribuição uniforme garante.
Aleatoriedade verdadeira e pseudoaleatoriedade
Computadores são máquinas determinísticas, então produzir aleatoriedade genuína é surpreendentemente difícil. Há duas abordagens muito diferentes. Um gerador de números verdadeiramente aleatórios (TRNG) mede um fenômeno físico imprevisível — ruído térmico ou ruído de disparo em circuitos, ruído de rádio atmosférico, o intervalo entre decaimentos radioativos, ou efeitos quânticos como fótons atingindo um divisor de feixe — e converte isso em bits. A aleatoriedade vem da natureza, então a saída não pode ser reproduzida nem prevista, mas colher esses bits é comparativamente lento.
Um gerador de números pseudoaleatórios (PRNG) é uma fórmula matemática que parte de um valor inicial chamado semente e produz uma sequência longa que parece aleatória. É rápido e prático, mas totalmente determinístico: quem souber a semente e o algoritmo reproduz exatamente a mesma sequência, e a sequência acaba se repetindo depois de um comprimento conhecido como período. Essa reprodutibilidade às vezes é uma vantagem — permite que cientistas repitam uma simulação de forma idêntica — mas vira uma falha grave quando o que importa é ser imprevisível.
Os sistemas modernos usam um híbrido: uma fonte de entropia em hardware semeia um algoritmo
pseudoaleatório rápido e de alta qualidade. É exatamente o que o seu navegador faz. A chamada
crypto.getRandomValues() que move esta página busca valores no reservatório de entropia do
sistema operacional, que é continuamente reabastecido com ruído de hardware. Por isso os números que
ela produz têm a imprevisibilidade de um TRNG com a velocidade de um PRNG — e é por isso que um
sorteio feito aqui não depende de você confiar em um servidor.
Os algoritmos por trás dos números pseudoaleatórios
Nem todo PRNG é igual. Décadas de pesquisa produziram famílias de algoritmos com qualidade e velocidade bem diferentes:
| Algoritmo | Ano / autoria | Observações |
|---|---|---|
| Congruencial linear (LCG) | a partir dos anos 1950 | Muito rápido e com estado minúsculo, mas estatisticamente fraco — valores consecutivos caem em hiperplanos detectáveis. Ainda comum em funções rand() básicas. |
| Mersenne Twister | 1997, Matsumoto e Nishimura | Período enorme, de 219937−1, e boa qualidade estatística; é o padrão em Python, R e em várias linguagens — mas não é criptograficamente seguro. |
| Xorshift | 2003, George Marsaglia | Geradores extremamente rápidos baseados em deslocamento de bits; passam em testes exigentes quando combinados com uma etapa não linear. |
| PCG | 2014, Melissa O'Neill | Família congruencial permutada que junta um núcleo LCG rápido a um embaralhamento na saída — pequena, rápida e estatisticamente excelente. |
Um engano comum é achar que o Mersenne Twister, por causa do período astronômico e dos bons resultados em testes, deve ser seguro para uso em segurança. Não é: observando apenas 624 saídas dele, um atacante consegue recuperar o estado interno e prever todos os valores seguintes. Qualidade estatística e segurança criptográfica são requisitos diferentes, e é em torno dessa distinção que esta ferramenta foi construída.
O que torna um gerador "criptograficamente seguro"
Um PRNG criptograficamente seguro (CSPRNG) precisa cumprir uma exigência bem mais dura
do que apenas passar em testes estatísticos. Duas propriedades o definem. O teste do próximo
bit: dados todos os bits já emitidos, nenhum algoritmo eficiente consegue prever o bit seguinte
com chance melhor do que a de um cara ou coroa. E a resistência ao comprometimento do
estado: mesmo que o estado interno seja de alguma forma exposto, o atacante ainda não consegue
reconstruir os números que já foram gerados antes. Um gerador não criptográfico como o
Math.random() do JavaScript falha nos dois — ele foi feito para velocidade em jogos e
animações, o estado dele pode ser recuperado a partir da saída, e a especificação nem sequer garante uma
qualidade específica de aleatoriedade.
O instituto de padrões dos Estados Unidos (NIST) publica o padrão para desenhos aprovados,
NIST SP 800-90A, que especifica geradores determinísticos de bits aleatórios já
auditados. A área também guarda um caso famoso de alerta: um algoritmo de uma versão anterior desse
padrão, o Dual_EC_DRBG, foi depois apontado como portador de um provável backdoor e
acabou retirado — um lembrete de que o desenho de um gerador, e não apenas a saída dele, é o que
determina se ele merece confiança. A fonte crypto.getRandomValues() usada aqui é a
interface do navegador para o CSPRNG auditado do sistema operacional.
Por que um intervalo justo é mais difícil do que parece
Suponha que você queira um número justo de 1 a 6 e tenha um gerador que devolve um byte aleatório
(0–255). O caminho preguiçoso é tirar o resto da divisão: byte % 6 + 1. Só que 256
não é múltiplo de 6. Os valores de 0 a 251 se dividem igualmente em seis baldes de 42, mas os quatro
valores que sobram, de 252 a 255, caem nos baldes de 1, 2, 3 e 4 — então esses quatro resultados
aparecem um pouco mais vezes do que 5 e 6. Isso é o viés de módulo e, embora o desvio
seja minúsculo para um dado, ele cresce com o intervalo e pode importar para chaves criptográficas,
loterias grandes ou amostragem científica.
A correção é a amostragem por rejeição: defina o maior múltiplo do seu intervalo que cabe na saída do gerador (no exemplo, 252) e simplesmente descarte — rejeite e sorteie de novo — qualquer valor igual ou acima dele. Todo valor que sobrevive corresponde a exatamente um resultado, então cada resultado tem precisamente a mesma chance. Este gerador aplica essa técnica a um sorteio completo de 32 bits para cada inteiro, e é por isso que os intervalos dele são matematicamente uniformes, em vez de apenas "quase certos".
Por que as pessoas são ruins em ser aleatórias
É tentador simplesmente "pensar em um número", mas gente é um gerador aleatório notavelmente ruim — e é exatamente por isso que uma ferramenta como esta existe. Quando se pede um dígito de 1 a 10, muito mais pessoas escolhem o 7 do que qualquer outro: ele parece o mais "aleatório" porque é ímpar, primo e fica longe das pontas redondas. As pessoas também evitam sem perceber repetir o mesmo valor duas vezes seguidas e tendem a alternar entre escolhas altas e baixas, porque uma sequência real de repetições parece não aleatória, mesmo que a aleatoriedade verdadeira produza sequências assim o tempo todo. O mesmo instinto alimenta a falácia do apostador: a crença equivocada de que, depois de várias caras, uma coroa está "atrasada". Cada sorteio independente não tem memória, então um gerador justo vai produzir tranquilamente agrupamentos e repetições que uma pessoa editando por intuição jamais escreveria. Se você precisa de um resultado que seja defensavelmente imparcial — para uma promoção, uma decisão de amostragem ou um critério de desempate — um sorteio uniforme feito por máquina elimina esse viés humano escondido.
Como a aleatoriedade é testada
Não dá para provar que uma sequência finita é aleatória, mas dá para submeter um gerador a baterias de testes estatísticos que tentam detectar padrões que uma fonte verdadeiramente aleatória não teria. A bateria clássica são os testes Diehard, de George Marsaglia (depois ampliados como Dieharder); a mais exigente entre as modernas é a TestU01, de Pierre L'Ecuyer, cujo conjunto "BigCrush" roda mais de cem testes. O NIST publica a própria Statistical Test Suite, voltada especificamente a geradores usados em criptografia. Por baixo de muitos desses testes está o humilde teste qui-quadrado, que verifica se as frequências observadas (quantas vezes cada valor apareceu) batem com a distribuição uniforme que se esperaria por acaso. Passar nesses testes é necessário mas, como dito acima, não é suficiente para uso criptográfico.
Números aleatórios no mundo real
A geração de números aleatórios sustenta em silêncio uma gama enorme de atividades:
- Criptografia. Chaves de criptografia, tokens de sessão, nonces, salts e assinaturas digitais dependem de números que um atacante não consiga adivinhar. Um gerador fraco aqui é catastrófico — chaves previsíveis podem ser quebradas diretamente.
- Simulação de Monte Carlo. Modelos de física, finanças, meteorologia e engenharia rodam milhões de tentativas aleatórias para estimar resultados complexos demais para serem resolvidos de forma direta, como a precificação de opções ou o comportamento de partículas.
- Jogos e geração procedural. Rolagens de dado, embaralhamento de cartas, quedas de itens e mundos inteiros gerados por computador dependem da aleatoriedade para continuarem imprevisíveis e justos.
- Amostragem estatística. Tirar uma amostra aleatória e representativa de uma população — para pesquisas, auditorias ou testes A/B — depende de cada integrante ter a mesma chance de ser escolhido.
- Loterias e sorteios de prêmio. Justiça e confiança pública exigem um sorteio sem viés e à prova de manipulação, exatamente a propriedade que a amostragem por rejeição garante.
Perguntas frequentes
- Este gerador de número aleatório é realmente aleatório?
- Ele usa a API crypto.getRandomValues() do seu navegador, que busca valores no gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG) do sistema operacional — a mesma fonte de entropia usada por gerenciadores de senha e pelo TLS. Ao contrário do Math.random(), ele é imprevisível e não aceita semente, então os resultados não podem ser reproduzidos nem adivinhados. Para números inteiros ainda aplicamos amostragem por rejeição, de modo que todo valor do seu intervalo tem exatamente a mesma probabilidade, sem viés de módulo. Na prática, é a mesma qualidade de aleatoriedade que protege chaves de criptografia, colocada a serviço de sortear número.
- Posso usar para sortear o ganhador de uma promoção de forma justa?
- Sim. Numere cada participante de 1 até N, coloque o intervalo em 1 até N, ligue "Únicos (sem repetir)" se você vai sortear mais de um ganhador e clique em Sortear. Como todos os números do intervalo têm a mesma chance e o sorteio não tem viés, a escolha é justa. Para transparência total, publique a lista numerada antes, grave a tela ou faça o sorteio ao vivo com os participantes: nada é enviado a um servidor, então o resultado é produzido na hora, no seu próprio aparelho.
- O que faz a opção "Únicos (sem repetir)"?
- Com ela desligada, cada número é sorteado de forma independente, então o mesmo valor pode aparecer mais de uma vez (como jogar o mesmo dado várias vezes). Com ela ligada, todos os números da saída são diferentes entre si — útil para sorteios no estilo loteria, para escolher ganhadores distintos ou para amostragem sem reposição. Se você pedir mais números únicos do que o intervalo comporta (por exemplo, 10 números únicos entre 1 e 5), a quantidade é automaticamente limitada ao tamanho do intervalo.
- Alguma coisa sai do meu navegador ou é gravada em algum lugar?
- Não. Cada número é gerado localmente, usando o processador do seu aparelho e a entropia do sistema operacional. Nada é enviado, transmitido ou registrado — nem os intervalos que você digita, nem os números sorteados — e a página continua funcionando offline depois de carregada. Também não há limite de uso nem cadastro: você pode sortear número quantas vezes quiser.