Numeros Aleatorios Estao em Todo Lugar
Numeros aleatorios alimentam tudo, de jogos e simulacoes a criptografia e pesquisa cientifica. Mas nem todos sao criados iguais - entender a diferenca importa.
Pseudo-Aleatorio vs Verdadeiramente Aleatorio
| Tipo | Fonte | Velocidade | Caso de Uso |
|---|---|---|---|
| Pseudo-aleatorio (PRNG) | Algoritmo matematico | Muito rapido | Jogos, simulacoes, testes |
| Criptografico (CSPRNG) | Pool de entropia do SO | Rapido | Seguranca, tokens, senhas |
| Verdadeiramente aleatorio (TRNG) | Fenomenos fisicos | Lento | Loterias, pesquisa cientifica |
Em JavaScript
// Pseudo-aleatorio (NAO criptograficamente seguro)
Math.random() // 0 a 1
Math.floor(Math.random() * 100) + 1 // 1 a 100
// Criptograficamente seguro
const array = new Uint32Array(1);
crypto.getRandomValues(array);
const seguro = array[0]; // 0 a 4.294.967.295
// Inteiro aleatorio em faixa (seguro)
function inteiroAleatorio(min, max) {
const faixa = max - min + 1;
const array = new Uint32Array(1);
crypto.getRandomValues(array);
return min + (array[0] % faixa);
}Casos de Uso Comuns
- Jogos: Rolagem de dados, embaralhamento de cartas, geracao procedural
- Seguranca: Geracao de senhas, tokens de sessao, nonces
- Testes: Fuzz testing, dados de teste aleatorios, simulacoes Monte Carlo
- Estatistica: Amostragem, bootstrapping, experimentos aleatorizados
- Arte: Arte generativa, texturas procedurais, musica
Distribuicoes Importam
Nem todo aleatorio deve ser uniforme. Diferentes distribuicoes servem diferentes propositos:
- Uniforme: Probabilidade igual na faixa (dados, loteria)
- Normal (Gaussiana): Curva de sino, maioria dos valores perto da media (alturas, notas)
- Exponencial: Modela tempo entre eventos (requisicoes de servidor, decaimento radioativo)
- Poisson: Contagem de eventos em um periodo (chamadas por hora, visitas ao site)
O Problema do Vies
Usar modulo (%) para restringir um numero aleatorio a uma faixa introduz vies quando a faixa nao divide uniformemente a faixa de origem. Para aplicacoes criticas, use amostragem por rejeicao.
Gere numeros aleatorios com faixas personalizadas usando o Gerador de Numeros Aleatorios do PureTools. Defina valores minimo e maximo, escolha quantos numeros gerar e obtenha resultados criptograficamente seguros instantaneamente.