Unixtopia

main/ artigos/

Pseudoaleatoriedade

Dados pseudoaleatórios são dados que parecem, por suas propriedades estatísticas, ter sido gerados por um processo aleatório, apesar de terem sido gerados por um processo determinístico, não aleatório. É uma aleatoriedade falsa, mas boa o suficiente, que surge de sistemas caóticos, sistemas que se comportam sem aleatoriedade, por regras rígidas, mas que embaralham, distorcem e transformam os números de uma forma tão complicada que eliminam padrões óbvios e deixam os dados parecendo muito "aleatórios", embora os números fossem embaralhados exatamente da mesma forma se o processo fosse repetido com as mesmas condições, é possível, se soubermos como o gerador funciona, prever quais números sairão de um gerador pseudoaleatório. Isso contrasta com a verdadeira aleatoriedade que, ao menos para o que a maioria dos físicos provavelmente pensa, aparece em alguns processos na natureza, mais notavelmente na física quântica, e que são absolutamente imprevisíveis, mesmo em teoria.

Como funciona?

Vamos mencionar que podemos usar tabelas de consulta, incorporar alguns dados aleatórios de alta qualidade diretamente em nosso programa e então usá-los como nossos números aleatórios, pegando um após o outro e voltando ao início quando acabarmos com eles. É assim que o gerador pseudoaleatório do Doom funcionava. Isso é fácil de fazer e rápido, mas ocupará um pouco de memória e oferecerá apenas uma sequência de tamanho bastante limitado, seu gerador terá um período curto, então pondere sobre prós e contras para suas necessidades específicas. De agora em diante, deixaremos isso para trás e nos concentraremos em realmente gerar os valores pseudoaleatórios com algum algoritmo, mas as tabelas de consulta ainda podem ser mantidas em mente, elas podem até mesmo ser combinadas de alguma forma com os geradores verdadeiros. Há possivelmente muitas maneiras de abordar a geração de números pseudoaleatórios, você pode simplesmente executar algum autômato celular caótico e então convertê-lo em números de alguma forma, no entanto, descreveremos a maneira mais típica, usada na implementação de linguagens de programação.

Geradores pseudoaleatórios geram uma sequência infinita, mas na prática eventualmente repetitiva, de números a partir de algum número inicial que chamamos de semente, é importante pensar em sequências do que em "números aleatórios" individuais, um número em si dificilmente pode ser aleatório. Para o mesmo número semente, a mesma sequência sempre será gerada, supondo que usemos o mesmo gerador. Se pedir ao gerador o próximo número pseudoaleatório, ele apenas gerará o próximo número na sequência e o passará para você. Os programas geralmente usam o tempo do sistema como o número semente do gerador porque isso fará com que o programa gere números diferentes cada vez que for executado.


Impulsionado por nada. Todo conteúdo é disponível sob CC0 1.0 domínio público. Envie comentários e correções para Mr. Unix em victor_hermian@disroot.org.