← Centro de Aprendizagem de Probabilidade

Geradores de números aleatórios, explicados

Um guia Super Mega Bowl

Quando este site lança uma moeda ou gira uma roleta, nenhum objeto físico está envolvido. Um computador produz um número que se comporta como o acaso. Mas computadores foram feitos para ser perfeitamente previsíveis, então como eles geram aleatoriedade? A resposta é mais engenhosa, e mais limitada, do que a maioria imagina.

O problema da aleatoriedade nos computadores

Um computador segue instruções exatas e sempre faz a mesma coisa dada a mesma entrada. Esse é o objetivo de um computador, e é também por isso que ele não consegue inventar aleatoriedade verdadeira sozinho. Tudo o que produz é resultado de um cálculo definido. Então, em vez de criar aleatoriedade real, a maioria dos softwares a imita de forma convincente com um gerador de números pseudoaleatórios, ou PRNG.

Como funciona um gerador pseudoaleatório

Um PRNG começa com um número chamado semente e o passa por uma fórmula para produzir o próximo número, depois realimenta esse valor para produzir o seguinte, e assim por diante. O fluxo que sai é distribuído uniformemente e passa em testes estatísticos de aleatoriedade, então, para qualquer finalidade prática, parece aleatório. Mas é totalmente determinado pela semente. Inicie dois PRNGs a partir da mesma semente e eles produzirão exatamente a mesma sequência para sempre. É por isso que se chama pseudoaleatório: parece aleatório, mas não é verdadeiramente imprevisível.

É isso que o gerador embutido de um navegador faz, e é o que move a moeda, os dados e a roleta daqui. Para um jogo justo, os resultados são uniformes e imprevisíveis na prática, que é tudo o que um randomizador justo precisa.

Sementes são um recurso, não apenas uma limitação

O fato de uma semente reproduzir a mesma sequência é muitas vezes exatamente o que você quer. Em testes, uma semente fixa permite repetir a mesma execução e depurá-la. Em simulações, permite que outros pesquisadores reproduzam seus resultados com precisão. Aleatoriedade reprodutível soa como contradição, mas é uma das ferramentas mais úteis da computação.

Geradores de números verdadeiramente aleatórios

Quando parecer aleatório não basta, os computadores buscam fora de si a imprevisibilidade real. Um gerador de números verdadeiramente aleatórios se apoia em ruído físico: ruído térmico eletrônico, o tempo do decaimento radioativo, estática atmosférica ou pequenas variações do hardware. Como se acredita que essas fontes sejam genuinamente imprevisíveis, os números que produzem são verdadeiramente aleatórios, não apenas estatisticamente aleatórios. São mais lentos de coletar, então normalmente são usados para semear outros geradores em vez de produzir cada valor.

Quando a aleatoriedade precisa ser segura

Segurança é o único lugar onde um PRNG comum é perigoso. Se um atacante conseguir descobrir a semente ou a fórmula, ele pode prever todos os valores futuros, o que seria catastrófico para senhas, chaves de criptografia ou embaralhamentos em jogos online. Para isso, os sistemas usam um gerador criptograficamente seguro, ou CSPRNG, projetado para que nem mesmo ver muitas saídas passadas dê qualquer pista útil sobre a próxima, e semeado por aleatoriedade física verdadeira. Essa é a diferença por trás da pergunta comum de se um randomizador é criptograficamente seguro. Um lançador de moedas casual é uniforme e justo, mas não seguro, e não pretende ser.

Qual tipo você realmente precisa

Veja um PRNG em ação → Cada lançamento, rolagem e giro aqui vem de um gerador pseudoaleatório. Rode um lote grande e verifique que os resultados são tão uniformes quanto a matemática promete.

A conclusão

Computadores não conseguem criar aleatoriedade verdadeira sozinhos, então usam geradores pseudoaleatórios: uma semente mais uma fórmula que produz sequências de aparência aleatória, porém totalmente determinadas. Isso é perfeito para jogos, justiça e simulações, e a semente reprodutível é um bônus. A aleatoriedade verdadeira vem do ruído físico, e a segurança exige um gerador criptográfico especial. Combine a ferramenta com a tarefa e a pseudoaleatoriedade cobre quase tudo.