Neste artigo
O Que É a Geração de Números Aleatórios?
A geração de números aleatórios é o processo de produzir números que não podem ser previstos antecipadamente. Os computadores são máquinas determinísticas — não conseguem produzir verdadeira aleatoriedade sem entrada externa. Técnicas diferentes produzem diferentes qualidades de aleatoriedade, o que é muito importante para aplicações de segurança.
Os geradores de números verdadeiramente aleatórios (TRNGs) recolhem entropia de fenómenos físicos: movimento do rato, temporização do teclado, tempos de chegada de pacotes de rede ou sensores de hardware dedicados. Os geradores de números pseudo-aleatórios (PRNGs) utilizam algoritmos matemáticos semeados com entropia para produzir sequências que parecem aleatórias.
Como São Gerados Números Aleatórios
O CheckTown utiliza o gerador de números aleatórios criptograficamente seguro do browser.
- Fonte de entropia — utiliza window.crypto.getRandomValues() que recorre à entropia ao nível do sistema operativo
- Mapeamento de intervalo — mapeia valores aleatórios brutos para o intervalo mínimo/máximo especificado sem distorção
- Geração em lote — gere vários números de uma vez para listas, arrays ou necessidades em volume
Experimente gratuitamente — sem cadastro
Gerar Números Aleatórios →Quando Usar um Gerador de Números Aleatórios
A geração de números aleatórios tem muitas aplicações no desenvolvimento, testes e estatística.
- Testes — gere dados de teste aleatórios para popular fixtures ou semear bases de dados de teste
- Amostragem — selecione amostras aleatórias de conjuntos de dados para análise estatística ou atribuição de testes A/B
- Jogos e simulações — gere entradas imprevisíveis para simulações, jogos ou sorteios
Perguntas Frequentes
Qual é a diferença entre Math.random() e crypto.getRandomValues()?
O Math.random() utiliza um PRNG rápido semeado no arranque. É adequado para simulações e jogos, mas não para segurança. O crypto.getRandomValues() utiliza o CSPRNG (PRNG Criptograficamente Seguro) do sistema operativo, adequado para gerar tokens, chaves e outros valores sensíveis à segurança. Use sempre crypto.getRandomValues() para fins de segurança.
Posso usar números aleatórios para chaves criptográficas?
Sim, mas apenas se gerados com um CSPRNG. Os números aleatórios gerados por Math.random() ou PRNGs não criptográficos semelhantes são previsíveis dado o seed e amostras de saída suficientes. As chaves criptográficas, tokens, salts e nonces devem ser gerados com aleatoriedade criptograficamente segura.
O que é o viés de módulo e como afeta os intervalos de números aleatórios?
O viés de módulo ocorre quando se mapeia um valor aleatório para um intervalo usando o operador %. Se o espaço de valores aleatórios não for divisível de forma uniforme pelo tamanho do intervalo, alguns valores aparecem com maior frequência do que outros. Por exemplo, mapear 0-255 para 0-9 usando % 10 faz com que os valores 0-5 apareçam ligeiramente mais vezes. O CheckTown utiliza amostragem por rejeição para eliminar o viés.