Gerador de números aleatórios
Um número inteiro aleatório entre dois limites
Gerador de números aleatórios
Como funciona o gerador de números aleatórios
Intervalos populares
1–10 · 1–100 · 1–6 · 1–2 · 1–3 · 1–4 · 1–5 · 1–20 · 1–50 · 1–1.000 · 0–9 · 0–1 · 1–60 · 1–12 · 1–30 · 1–8 · 1–25 · 1–365 · 1–10.000 · 0–100 · 1–200 · 1–500 · 1–40 · 0–10
A fórmula de qualquer intervalo
Um intervalo de min a max com os dois extremos incluídos tem
números inteiros, e um gerador justo dá a cada um a mesma chance, P = 1 / N. O «+ 1» é o que mais se esquece: de 1 a 100 há 100 números, não 99, porque os dois extremos contam. Com repetição os sorteios são independentes, e a chance de um número específico sair pelo menos uma vez em k sorteios é
que passa de 50% por volta de 0,69 × N sorteios (ln 2 ≈ 0,693), e não em N / 2.
Como um número é sorteado, passo a passo
- O navegador preenche uma palavra de 32 bits com
crypto.getRandomValues()— um valor de 0 a 4.294.967.295. - As palavras iguais ou maiores que
⌊232 / N⌋ × Nsão descartadas e sorteadas de novo. Esse corte deixa o espaço como múltiplo exato de N; sem ele, o resto favoreceria um pouco os números baixos. - A palavra aceita é dividida por N, e o resto é somado a min. Para vários números diferentes o gerador embaralha o intervalo parcialmente (Fisher–Yates), então cada número só pode sair uma vez.
Por que não Math.random()
Math.random() é um gerador rápido de uso geral: o padrão da linguagem não exige que ele seja imprevisível, e os navegadores o implementam com algoritmos cuja próxima saída pode ser reconstruída a partir das anteriores. crypto.getRandomValues() é a fonte criptograficamente segura do navegador, alimentada pelo sistema operacional — a mesma usada para gerar chaves de criptografia. Não há alternativa: um navegador sem ela recebe um aviso, não um número mais fraco.
Como ler o resultado
| Intervalo | Números inteiros | Chance de cada número | Sorteios até 50% |
|---|---|---|---|
| 1–2 | 2 | 50% | 1 |
| 1–6 | 6 | ≈16,67% | 4 |
| 1–10 | 10 | 10% | 7 |
| 1–20 | 20 | 5% | 14 |
| 1–100 | 100 | 1% | 69 |
| 1–1.000 | 1.000 | 0,1% | 693 |
| 1–10.000 | 10.000 | 0,01% | 6.932 |
«Sorteios até 50%» é quantos sorteios independentes são precisos para que um número específico tenha pelo menos metade de chance de ter saído uma vez. Os sorteios anteriores não mudam nada: um número que não sai há tempo não «está para sair».
Para que se usa
- Sorteios e promoções: numere as participações e sorteie um vencedor de 1 ao total.
- Jogos tipo loteria: vários números diferentes de uma vez com «Sem repetição», em ordem se quiser.
- Jogos: no lugar de um dado — de 1 a 6 para um comum, de 1 a 20 para um d20.
- Aulas e reuniões: escolher de quem é a vez pelo número na lista.
- Amostragem: decidir quais linhas, itens ou entrevistados entram numa amostra aleatória.
- Desempate: quando todas as opções servem igualmente, deixe um número decidir.
Limites e ressalvas
- Um algoritmo, não um processo físico. Os números vêm de um gerador pseudoaleatório criptograficamente seguro: imprevisível na prática, mas calculado. Serviços como o random.org tiram a aleatoriedade de ruído físico; nos sorteios do dia a dia a diferença não aparece.
- Só números inteiros, de 0 a 1.000.000; o limite inferior deve ser menor que o superior.
- Até 1.000 números por sorteio, e sem repetição não mais do que o intervalo tem.
- Nada é registrado. O histórico vive só nesta aba; para um sorteio que precise de testemunhas ou auditoria, siga o procedimento do seu regulamento.
Veja também
- Roleta aleatória - Sorteador de nomes e roleta de decisões — gire e ela escolhe por você
- Conversor de Porcentagem para Probabilidade - Converter porcentagem em probabilidade "1 em X"