Gerador de números aleatórios
Gere um ou vários números inteiros aleatórios dentro de um intervalo, com um modo opcional sem duplicados — instantaneamente, no seu navegador.
Esta página foi traduzida do inglês com a ajuda de IA e conferida com o original. Ler a versão em inglês
- Grátis — Sem necessidade de cadastro
- Instantâneo — Os resultados são atualizados enquanto você digita
- Privado — Processado no seu navegador
Sortear um vencedor, amostrar linhas para uma verificação pontual, jogar dados, gerar dados de teste: no fundo, é sempre o mesmo pedido — números dentro de um intervalo, escolhidos de forma justa. O gerador acima faz exatamente isso, com uma opção para sorteios sem reposição.
Como funciona
Defina o mínimo e o máximo (ambos incluídos e ambos inteiros) e quantos valores você quer, de 1 a 1.000. Depois escolha entre dois comportamentos:
- Com repetição (padrão): cada valor é sorteado de forma independente, então duplicatas são possíveis e, em um intervalo pequeno, prováveis. É o que você quer para dados, simulações e qualquer coisa que modele eventos independentes.
- Únicos: os valores são sorteados sem reposição, de modo que nenhum número aparece duas vezes. A ferramenta monta o intervalo completo, embaralha com o algoritmo de Fisher–Yates e pega os n primeiros. Se você pedir mais valores únicos do que o intervalo contém, ela informa quantos são realmente possíveis em vez de entrar em loop infinito.
As entradas são validadas, e não ajustadas silenciosamente: um mínimo maior que o máximo, um limite não inteiro ou uma quantidade fora da faixa gera uma mensagem. Gerar novamente sorteia um novo conjunto, e Copiar tudo coloca os valores na área de transferência como uma lista separada por vírgulas.
A aleatoriedade é criptográfica
Isso importa mais do que parece. O gerador usa crypto.getRandomValues() da Web Crypto API, e não Math.random().
Math.random() é um gerador pseudoaleatório rápido, com seed obtida de uma fonte não especificada. Ele serve muito bem para dar um jitter numa animação ou embaralhar um carrossel. Não serve para nada em que alguém tenha incentivo para prever o resultado, porque seu estado interno pode ser recuperado a partir de um número modesto de saídas observadas, e isso já foi demonstrado contra engines de navegadores reais. Um sorteio com prêmio, um token, uma rifa, uma auditoria por amostragem que alguém possa contestar: tudo isso precisa de uma fonte criptograficamente segura, que é exatamente o que getRandomValues() oferece.
O embaralhamento também importa. Fisher–Yates é a única forma sem viés de permutar uma lista em tempo linear; o popular one-liner array.sort(() => Math.random() - 0.5) produz uma distribuição com viés mensurável, porque algoritmos de ordenação por comparação pressupõem um comparador consistente, e este não é.
Tudo roda localmente. Nem o intervalo, nem a quantidade, nem os resultados saem do navegador.
Quando não usar
Senhas e chaves. Um número aleatório não é uma senha. Use o gerador de senhas, que sorteia de um espaço de caracteres muito maior, ou o gerador de UUID para identificadores que precisam ser únicos, e não imprevisíveis. Nunca monte um segredo concatenando números de um intervalo escolhido por você.
Testes reproduzíveis. A aleatoriedade criptográfica não aceita seed, e é justamente essa a ideia; mas isso a torna a ferramenta errada para dados de teste que você precisa regenerar de forma idêntica. Use um PRNG com seed dentro do próprio teste ou fixe os valores como fixture. Um teste cuja entrada muda a cada execução é um teste que falha de forma intermitente por motivos que ninguém consegue reconstruir. Fundamentos de testes mostra onde o determinismo deve ficar e onde a aleatoriedade dos testes baseados em propriedades realmente ajuda.
Qualquer coisa que exija trilha de auditoria. A ferramenta não guarda nenhum registro. Para um sorteio que precise ser verificável depois, você precisa de um procedimento documentado e de uma seed ou um commitment publicados, não de uma aba do navegador.
Números aleatórios em segurança
Aleatoriedade previsível é uma causa raiz recorrente de incidentes de segurança: identificadores de sessão, tokens de redefinição de senha, nonces de CSRF e vetores de inicialização já foram quebrados por geradores que nunca foram feitos para resistir à previsão. A regra é simples e absoluta: tudo o que um atacante ganharia ao adivinhar deve vir de um CSPRNG (crypto.getRandomValues() no navegador, SecureRandom em Java, secrets em Python), e todo o resto pode usar o rápido. Fundamentos de segurança da informação aborda entropia e onde essas primitivas se encaixam; OWASP Top 10 cobre as categorias em que a aleatoriedade fraca de fato aparece.
Perguntas frequentes
- Quão aleatórios são esses números?
- Os números são gerados com o crypto.getRandomValues da API Web Crypto, adequado para rifas, amostragens e jogos, mas não pensado como gerador de chaves criptográficas.
- O que faz a opção "Sem duplicados"?
- Garante que cada número do resultado seja único, o que exige que o intervalo escolhido contenha pelo menos tantos valores quanto a quantidade pedida.
- Algo é enviado a um servidor?
- Não. Os números são gerados totalmente no seu navegador.