Command Palette

Search for a command to run...

Como gerar números aleatórios online: intervalos, conjuntos exclusivos e quando a aleatoriedade realmente importa

Como gerar números aleatórios online: intervalos, conjuntos exclusivos e quando a aleatoriedade realmente importa

T
Toolz Team
|Aug 23, 2026|15 min ler

Parte da coleção geradores

A primeira vez que números aleatórios me morderam foi em um projeto paralelo de Laravel anos antes de começar a construir o Toolz.dev. Eu precisava de códigos de referência curtos, alcançados rand() porque estava bem ali, e enviou-o Uma semana depois dois usuários tinham o mesmo código Não porque as probabilidades eram astronômicas, mas porque EU tinha entendido mal o quê rand() realmente prometido. Esse pequeno constrangimento me ensinou uma lição que carreguei em todas as ferramentas do Toolz.dev: & quot; aleatório" não é uma coisa. Existe o aleatório casual que serve para um lançamento de dados, e existe o aleatório sério que você precisa no momento em que um valor guarda qualquer coisa.

Este guia é a versão longa do que EU gostaria que alguém tivesse me dito naquela época Eu vou caminhar sobre como gerar números aleatórios com o Gerador de números aleatórios no Toolz.dev, quando conjuntos exclusivos são importantes, por que a fonte da aleatoriedade muda o que você pode usar com segurança a saída e os casos práticos em que eu a busco durante a construção.

tl;dr: Um gerador de números aleatórios desenha valores de um intervalo que você define Defina um mínimo e máximo, escolha quantos números você deseja e escolha inteiros ou decimais. Ligue apenas exclusivamente quando nenhum valor puder se repetir, que é o que você deseja para loterias, sorteios e amostragem sem substituição. O gerador Toolz.dev é executado inteiramente em seu navegador e prefere a API Web Crypto por sua aleatoriedade, portanto, nada que você gere sai do seu dispositivo.

O que um gerador de números aleatórios realmente faz?

Um gerador de números aleatórios mapeia uma fonte imprevisível de bits em um intervalo Esse é o trabalho inteiro Em um navegador a fonte que importa é crypto.getRandomValues(), que a API de criptografia da Web exige que seja criptograficamente forte - ao contrário Math.random(), que não faz tal promessa Você diz o intervalo, digamos 1 a 100, e ele retorna um valor de dentro desse intervalo onde, idealmente, cada valor tem uma chance igual de aparecer Peça mais de um e ele repete o sorteio.

A parte interessante é a palavra & quot; imprevisível, & quot; porque os computadores são máquinas determinísticas que não produzem surpresa naturalmente O que eles produzem é pseudo-aleatoriedade: uma sequência que parece aleatória e passa em testes estatísticos, mas é gerada por um algoritmo de uma semente inicial Dê ao mesmo algoritmo a mesma semente e você obtém a mesma sequência todas as vezes Essa reprodutibilidade é uma característica quando você está escrevendo um teste que precisa ser repetível, e uma responsabilidade quando você está cunhando algo que deve ser impensável.

No Toolz.dev, o gerador fica no navegador e lê seus bits crypto.getRandomValues quando o navegador expõe, o que todo navegador moderno faz Essa função é definida pela API W3 C Web Cryptography e é apoiada pelo sistema operacional' s fonte criptograficamente segura Quando essa fonte está presente, os números são imprevisíveis o suficiente para o trabalho adjacente à segurança como escolher tokens ou embaralhar um deck Quando de alguma forma não está disponível, a ferramenta cai de volta para o gerador JavaScript padrão, que é bom para jogos e amostragem, mas nunca deve semear nada secreto Saber em qual desses dois mundos você está é a única coisa mais importante sobre o uso de qualquer RNG bem.

Como faço para gerar números aleatórios no Toolz.dev?

O fluxo é deliberadamente curto porque na maioria das vezes você só quer um número e quer agora.

Primeiro, defina o intervalo Insira o mínimo e o máximo Para inteiros o intervalo é inclusivo em ambas as extremidades, então 1 a 6 pode retornar qualquer um de 1, 2, 3, 4, 5 ou 6, exatamente como um dado Valores negativos e intervalos que abrangem zero, como -50 a 50, funcionam da mesma maneira.

Segundo, escolha quantos números você deseja Um número para uma escolha rápida, ou um lote de até dez mil quando você estiver semeando dados de teste ou construindo uma amostra.

Terceiro, escolha as opções Deixar o & quot; apenas inteiros" ligado para números inteiros, ou desligue - o e defina o número de casas decimais quando precisar de valores fraccionários, Ligue o & quot; apenas os valores únicos" quando nenhum número poderá repetir - se.

Finalmente, clique em Gerar O resultado mostra a lista junto com a soma e a média, e todo o lote copia como uma lista separada por novas linhas, de modo que ele caia direto em uma coluna de planilha, um script ou um dispositivo elétrico de teste Se você tiver usado o gerador de uuid ou o gerador de senha no Toolz.dev, a forma disso parecerá familiar, porque tento manter os geradores consistentes.

Quando devo usar números exclusivos?

Esta é a opção que as pessoas perdem e é a que mais muda a matemática.

Por padrão o gerador desenha com substituição Todo sorteio é independente, então um número pode aparecer mais de uma vez no mesmo lote Isso é correto para dados de rolamento, porque um par real de dados pode absolutamente chegar a dois quatros Mas é errado para um sorteio de loteria, um sorteio, ou qualquer momento que você está escolhendo uma amostra sem colocar o token de volta no saco.

Ligue apenas único e o gerador desenha sem substituição Ele mantém um registro do que já produziu e pula repetições até que tenha preenchido seu lote O uso clássico são números de loteria: se você quiser seis números de 1 a 49 sem duplicatas, único-somente é a diferença entre um bilhete válido e um quebrado.

Há um limite natural aqui, e a ferramenta respeita-o Você não pode desenhar mais inteiros únicos do que o intervalo pode segurar Peça dez números únicos entre 1 e 5 e não há resposta válida, porque apenas cinco inteiros distintos existem nesse intervalo Em vez de girar para sempre tentando encontrar um sexto valor impossível, o gerador pára e diz que o intervalo é muito pequeno Eu construí esse guarda de propósito depois de assistir muitos loops de embaralhamento ingênuos pendurados no código de produção.

Inteiros ou decimais: de quais preciso?

Os números inteiros cobrem a maioria das solicitações Dados, bolas de loteria, índices de matriz e contagens de registros são todos números inteiros, e o modo inteiro oferece um intervalo inclusivo que corresponde à forma como as pessoas pensam sobre essas coisas.

Os decimais são para quantidades contínuas: um preço aleatório, uma leitura simulada do sensor, um peso, uma probabilidade Desligue o modo inteiro e a ferramenta extrai do intervalo semiaberto que inclui o mínimo, mas não o máximo Essa convenção semiaberta, mínimo incluído e máximo excluído, é a mesma que está subjacente a quase todos os RNG de ponto flutuante em todas as linguagens, incluindo JavaScript' s próprios Math.random, que retorna um valor no intervalo de 0 até, mas não incluindo 1. Corresponder a essa convenção significa que os números que você obtém aqui se comportam como os números que você obteria no código.

Você também controla o número de casas decimais, de um a dez Duas casas é certo para valores semelhantes a moeda, mais quando você está simulando medidas que precisam de resolução mais fina Tenha em mente que único-somente mais decimais é quase sempre satisfatível porque o espaço de decimais distintos é enorme, enquanto único-somente mais um intervalo inteiro minúsculo é onde você bate na parede descrita acima.

Quão aleatório é o & quot; aleatório o suficiente"?

Aqui está a tabela que EU gostaria de ter visto antes daquele incidente do código de referência Ele mapeia os casos de uso comum para o tipo de aleatoriedade que eles realmente exigem.

caso de uso Aleatoriedade necessária Repetições permitidas? notas
Dados, jogos de tabuleiro Pseudo-aleatório está bem sim Independência por rolo é o ponto
Escolhendo um vencedor aleatório Preferido criptográfico Não (apenas exclusivo) A justiça é importante, use apenas uma opção
Números de loteria ou sorteio Preferido criptográfico Não (apenas exclusivo) Desenhar sem substituição
Linhas de amostragem para análise Pseudo-aleatório está bem geralmente não Único para amostragem sem substituição
Instalações de teste de semeadura Pseudo-aleatório está bem sim A reprodutibilidade pode até ser desejável
Tokens de segurança, segredos Criptográfico necessário não Nunca use um PRNG simples aqui

A linha que faz as pessoas subirem é o & quot; search tokens." um RNG de uso geral, mesmo que seja bom, não substitui um gerador secreto construído especificamente Se você estiver criando uma chave de API, um token de sessão ou uma senha, use uma ferramenta projetada para esse trabalho, como o gerador de senha, ou uma ferramenta de hashing como o gerador de hash quando você precisa de um resumo de comprimento fixo O gerador de números aleatórios é para números em um intervalo, não para material de chave criptográfica, e o enquadramento honesto desse limite é mais útil do que fingir que uma ferramenta faz tudo.

O que posso realmente construir com ele?

Algumas das maneiras pelas quais isso conquista seu lugar no meu fluxo de trabalho.

Quando estou testando uma UI que renderiza listas, gero um lote de algumas centenas de números para substituir quantidades, preços ou pontuações, colá-los em um dispositivo elétrico e, de repente, o layout é exercitado com variedade realista em vez das mesmas três linhas digitadas à mão Para o trabalho do WordPress no WP Adminify, usei valores aleatórios para preencher o conteúdo da demonstração para que uma tela de configurações pareça viva em uma captura de tela.

Quando um cliente executa um sorteio, o modo exclusivo escolhe os vencedores de forma justa a partir de uma lista numerada de participantes Atribua um número a cada participante, sorteie tantos vencedores únicos quantos os prêmios forem feitos Sem fórmula de planilha, sem discussão sobre se o sorteio foi fraudado, porque os números vieram de uma fonte que nenhum de nós controla.

Para uma rápida intuição estatística, gerar um grande lote e olhar para a soma e a média é uma rápida verificação de sanidade de que o intervalo e a distribuição estão se comportando Se EU pedir números de 1 a 100 e a média voltar perto de 50, o mundo é como esperado.

E para as coisas do dia-a-dia, é um rolo de dados, um lançamento de moeda quando trata 1 e 2 como cara e coroa, e um & quot; escolha um número & quot; colono de pequenos argumentos Nem todo uso tem que ser sério para ser útil.

Como isso se compara a escrever o seu próprio?

Você poderia escrever Math.floor(Math.random() * (max - min + 1)) + min e seja feito Eu escrevi essa linha mil vezes Então, por que alcançar uma ferramenta?

Duas razões, ambas aprenderam da maneira mais difícil A primeira são os erros off-by-one e módulo-viés que se arrastam para a matemática de alcance enrolada à mão, especialmente depois de adicionar o limite inclusivo versus exclusivo e o requisito exclusivo A ferramenta lida com os casos de borda, incluindo o & quot; você pediu valores mais exclusivos do que o exist" case, para que você não os redescubra às 2 da manhã A segunda é essa Math.random explicitamente não é criptograficamente seguro, um fato que a documentação MDN afirma claramente, e é fácil esquecer que quando você cola um trecho em código que mais tarde guarda algo real O gerador Toolz.dev padrão para a fonte de criptografia, então o comportamento mais seguro é aquele que você obtém sem pensar sobre isso.

Para um número único em um ambiente que você controla, um trecho é bom Para sorteios repetíveis, conjuntos exclusivos, lotes que você deseja copiar ou qualquer coisa onde você queira a fonte de criptografia por padrão, a ferramenta salva as partes complicadas.

Se o seu trabalho se inclina mais para codificação e formatação do que para geração de números, a mesma filosofia do lado do cliente percorre o resto da caixa de ferramentas, a partir do Lorem ipsum gerador de texto de espaço reservado para o conjunto mais amplo coberto no Ferramentas de produtividade do desenvolve guia. E porque cada um deles corre localmente, o privacidade dados a história é a mesma em todos eles: suas entradas permanecem no seu navegador.

Quais são os erros comuns que as pessoas cometem com números aleatórios?

Depois de anos revisando código, meu e outras pessoas & #39; s, o mesmo punhado de erros aparecem de novo e de novo, e eles valem a pena nomear para que você possa evitá-los.

O primeiro é confuso & quot; unlikely" com & quot;impossible." My reference-code story é exatamente este Quando você desenhar com substituição de um intervalo, colisões não são um bug, eles são uma certeza estatística dado bastante sorteios O paradoxo do aniversário é a ilustração clássica: em um grupo de apenas 23 pessoas a chance de dois compartilhar um aniversário é superior a 50 por cento, muito maior do que a intuição sugere, porque você está comparando cada par, não comparando todos a uma data fixa Se seus valores devem ser únicos, não espere que o intervalo é grande o suficienteLigue o único-somente e remova a dúvida.

O segundo é alcançar a fonte errada Muitos tutoriais mostram uma fórmula de intervalo construída sobre Math.random e nunca mencione que é inadequado para qualquer coisa sensível à segurança O valor parece aleatório, a demonstração funciona e o hábito adere Então alguém copia esse trecho em código que gera um token de redefinição de senha, e agora o & quot; aleatório" token é previsível para qualquer um que entenda o algoritmo subjacente A regra é contundente: se um ser humano nunca deve ser capaz de adivinhar o valor, ele precisa de uma fonte criptográfica O gerador Toolz.dev padrão para essa fonte, que é o padrão mais seguro para construir um hábito ao redor.

O terceiro é erros off-by-one nos limites de intervalo Os endpoints inclusivos versus exclusivos tropeçam até mesmo em desenvolvedores experientes, porque diferentes linguagens e diferentes funções fazem escolhas diferentes 100 é uma saída possível quando EU peço 1 a 100? para inteiros aqui, sim, ambas as extremidades estão incluídas Para decimais o máximo é excluído, combinando com a convenção de ponto flutuante Ser explícito sobre qual convenção se aplica impede o bug silencioso onde seus dados nunca rolam um seis porque você escreveu < max em vez de <= max.

O quarto é assumir uma pequena amostra parece aleatória Verdadeira aleatoriedade produz aglomerados e estrias Virar uma moeda justa dez vezes e uma corrida de quatro cabeças é completamente normal, ainda as pessoas vê-lo e assumir a moeda, ou o gerador, está quebrado Aleatoriedade não é o mesmo que espaçamento par Se você quer valores uniformemente espaçados, você não quer um gerador de números aleatórios em tudo, você quer uma sequência Sabendo qual você realmente precisa é metade da batalha.

Perguntas frequentes

Como funciona um gerador de números aleatórios?

Um gerador de números aleatórios mapeia uma fonte imprevisível de bits no intervalo que você escolhe Esta ferramenta lê bytes da API Web Crypto quando está disponível e os dimensiona em seu intervalo mínimo para o máximo, de modo que cada valor no intervalo tem uma chance igual de ser desenhado.

Os números são verdadeiramente aleatórios?

São números pseudo-aleatórios criptograficamente fortes, que são imprevisíveis para todos os fins práticos Quando o navegador expõe crypto.getRandomValues a saída é adequada para tokens e embaralhamento; se apenas o gerador padrão estiver disponível, os valores ainda estarão bem distribuídos, mas não deverão ser usados para segredos.

Como faço para gerar números aleatórios únicos sem repetições?

Habilite a opção somente exclusiva antes de gerar A ferramenta então desenha sem substituição, para que cada número no lote seja diferente Se você solicitar mais números inteiros exclusivos do que o intervalo pode conter, ele informa em vez de fazer um loop para sempre.

Pode gerar números decimais?

Sim. Desligue a opção inteira e defina quantas casas decimais você deseja Os decimais são extraídos do intervalo semiaberto que inclui o mínimo, mas não o máximo, que é a convenção padrão para intervalos contínuos.

Posso usar números negativos?

Sim. Insira um mínimo negativo, um máximo negativo ou um intervalo que abrange zero, como -50 a 50. O gerador lida com intervalos negativos e mistos da mesma forma que lida com os positivos.

Quantos números posso gerar de uma vez?

Até 10.000 números por lote O resultado inclui a soma e a média para que você possa verificar rapidamente grandes lotes com sanidade, e toda a lista é copiada como valores separados por nova linha.

Este gerador de números aleatórios é gratuito e privado?

Sim. é gratuito sem inscrição e sem limite de uso, e cada número é gerado em seu navegador Nenhum intervalo, contagem ou resultado é transmitido a um servidor.

Para que posso usar um gerador de números aleatórios?

Usos comuns incluem escolher números de loteria ou sorteio, lançar dados para jogos, escolher um vencedor aleatório, semear dados de teste, amostrar linhas para análise e randomizar a ordem de uma lista. O modo exclusivo cobre qualquer caso que precise de amostragem sem repetições.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!