Gerador de números aleatórios

Um número inteiro aleatório entre dois limites

Gerador de números aleatórios

Número aleatório de
a

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 = max − min + 1

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 é

1 − (1 − 1/N)k

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

  1. O navegador preenche uma palavra de 32 bits com crypto.getRandomValues() — um valor de 0 a 4.294.967.295.
  2. As palavras iguais ou maiores que ⌊232 / N⌋ × N sã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.
  3. 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

IntervaloNúmeros inteirosChance de cada número Sorteios até 50%
1–2250%1
1–66≈16,67%4
1–101010%7
1–20205%14
1–1001001%69
1–1.0001.0000,1%693
1–10.00010.0000,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

Gerador de números aleatórios

Este gerador escolhe um número inteiro aleatório entre dois limites, ambos incluídos. O número é sorteado no seu navegador a partir da fonte aleatória criptográfica dele, e todos os números do intervalo têm a mesma chance. Por exemplo, pode ajudá-lo a descobrir número aleatório entre 1 e 100? Digite o limite inferior (por exemplo, '1') e o superior (por exemplo, '100') e toque em «Gerar». Na página do intervalo você pode sortear vários números de uma vez, com ou sem repetição.

FAQ

Como o gerador escolhe o número?

Ele pede ao navegador um valor aleatório de 32 bits com crypto.getRandomValues() e o leva para o intervalo. Os valores do último bloco incompleto do espaço de 32 bits são descartados e sorteados de novo (amostragem por rejeição), então todos os números do intervalo têm exatamente a mesma chance e os menores não saem favorecidos.

Os dois limites estão incluídos?

Sim. De 1 a 100 há 100 números inteiros, e o 1 e o 100 saem com a mesma frequência que o 50. Em geral, de min a max há max − min + 1 números, e cada um tem chance de 1 nessa quantidade.

Posso sortear vários números sem repetição?

Sim. Informe quantos números você precisa e marque «Sem repetição»: o gerador sorteia sem reposição, como bolas de um globo, e nenhum número aparece duas vezes. Sem repetição não dá para pedir mais números do que o intervalo tem.

O número é realmente aleatório?

O gerador criptográfico do navegador recebe sua semente da entropia do sistema operacional e foi feito para que a saída não possa ser prevista — é o mesmo tipo de fonte usado para criar chaves de criptografia. Ainda assim é um algoritmo, não um processo físico; para um sorteio oficial com ata, siga o procedimento que o seu regulamento exige.