“Aleatório” significa ao acaso, imprevisível, e vem de “alea”, “dados” em latim. Durante milênios o principal uso do imprevisível foi em jogos e o lançamento de dados é um método antiquíssimo para gerar imprevisibilidade: dados feitos de ossos foram escavados em sítios arqueológicos do 3º milênio a.C. na Mesopotâmia, no Egito e no vale do Indus. Outros métodos foram desenvolvidos ao longo da história: lançamento de moedas (comum no Império Romano), embaralhamento de cartas (China, século 9) e roleta (França, século 18) estão entre os mais conhecidos.
A palavra “azar”, que originalmente era sinônima de “acaso”, está diretamente relacionada: ela provém do árabe “az-zhar”, uma figura em forma de flor que os árabes pintavam nos dados. A teoria matemática da probabilidade também vem desse contexto: sua primeira exposição sistemática foi feita em “Liber de ludo aleae” (“Livro dos jogos de dados”, em latim), escrito pelo italiano Gerolamo Cardano por volta de 1564 e publicado em 1663.
Hoje, na era do cálculo eletrônico, a capacidade de produzir valores aleatórios tem importantes aplicações práticas, muito além dos jogos de azar: em criptografia (senhas aleatórias), estatística (simulações de Monte Carlo), desenvolvimento de software (algoritmos aleatórios), modelagem da natureza (estudo de mutações) e tomada de decisões (seleção de júris), para mencionar apenas algumas. Isso levanta a questão: como gerar números aleatórios por meio de um computador? Para entender o problema, precisamos refletir sobre o que é o acaso.
Até o começo do século 20, a ciência era regida pelo princípio do determinismo, assim formulado por Pierre-Simon de Laplace: “para uma inteligência que, num dado instante, conhecesse todas as forças que animam a natureza e a posição de todos os seres que a compõem e que, além disso, fosse suficientemente vasta para submeter esses dados à análise, nada seria incerto: o futuro, tal como o passado, estaria presente a seus olhos”.
Teoricamente, se conhecêssemos exatamente a posição e velocidade do dado no lançamento, bem como a situação precisa do ambiente, poderíamos usar as leis da física para prever com exatidão em que face o dado vai cair. O resultado do lançamento só parece imprevisível porque não temos essas informações. O acaso não existe realmente, ele é uma ilusão causada pela nossa ignorância.
Mas então como produzir números aleatórios num computador, cujo comportamento é totalmente determinado por uma sequência pré-estabelecida de operações (o programa), onde não há espaço para ignorância? Grosseiramente falando, os métodos clássicos consistem em esconder informação. O computador tudo sabe, mas não conta, de tal modo que para o usuário os resultados do cálculo pareçam vir ao acaso.
Por exemplo, o computador calcula o valor de N vezes p mais q, onde p e q são números primos muito grandes, e informa o resto da sua divisão por r, outro primo grande. Para o usuário, que não conhece a fórmula nem os primos, os resultados para N=1, 2, 3, … aparentam surgir ao acaso quando, de fato, são totalmente previsíveis. Os especialistas falam em números pseudoaleatórios, ou seja, que parecem aleatórios, mas não são. É o que, à falta de melhor, usamos desde a invenção do computador.
Mas isso está a ponto de mudar. Não perca na semana que vem.
LINK PRESENTE: Gostou deste texto? Assinante pode liberar sete acessos gratuitos de qualquer link por dia. Basta clicar no F azul abaixo.

















Deixe um comentário