Numeros pseudoaleatórios
description
Transcript of Numeros pseudoaleatórios
Números pseudoaleatórios ... Pseudo? Todos conhecemos coisas aleatórias, a rolagem de um dado, o resultado do cara ou coroa, um
sorteio ou até aquele amigo que todos temos. Vemos durante nossa vida várias aplicações para números
aleatórios, e no mundo de hoje observamos vários programas e aplicativos dependentes de tais números,
principalmente no mundo dos jogos, é comum observar um computador gerar tais números, o que nos
faz pensar, como? Como computadores, maquinas puramente matemáticas e determinísticas podem
produzir sequências aparentemente aleatórias? Para responder isso primeiramente temos que repensar
o que é aleatório.
Eu poderia dizer um número qualquer, por exemplo 4, e você não saberia qual número eu diria
até eu que eu o diga, esse número para você seria aleatório? A resposta depende de quantas vezes você
já leu isso, na primeira vez, sim este número foi completamente aleatório para você, depois disso, nem
tanto, você já sabia que eu diria 4, e, portanto, esse número deixou de ser aleatório e se tornou previsível.
Quer dizer então que aleatório significa imprevisível? Na verdade, não, nem todo número
imprevisível é aleatório por exemplo, você pode dizer que o 100 digito de π é aleatório, mas não é, não
para um matemático que estudou isso durante toda sua vida, e aleatoriedade é absoluta, mas todo
número aleatório é imprevisível.
E esses dois conceitos, Imprevisibilidade e Aleatoriedade, diferentes, mas que muitas vezes são
confundidos são a chave para o nosso problema, é exatamente dessa confusão que um computador
aproveita, no fim um computador não gera números aleatórios e sim números imprevisíveis, poderíamos
dizer que números aleatórios “falsos”, e é aqui que chegamos nas palavras difíceis, esses números aleatórios “falsos” são chamados de números pseudoaleatórios.
Computadores possuem meios de gerar, em geral por software, através de algoritmos chamados
PRNGs estes números, esses algoritmos trabalham a partir de um número inicial, ou semente, e seguem
um processo iterativo, substituindo a semente pelo resultado encontrado, assim gerando sequencias de números aleatórios.
Os primeiros algoritmos eram bastante simplificados devido às restrições computacionais, por
exemplo o computador ENIAC possui o algoritmo do meio dos quadrados, desenvolvido por Von Neuman
em 1946, que consiste em dado um número inicial, elevar este um número ao quadrado e tomar os
“dígitos centrais” como o número aleatório, e então usar esse número para gerar o próximo, por exemplo
o número 54 ao quadrado é 2916, e seus “dígitos centrais” são 91 que seria o resultado, e o próximo número à ser usado.
Algoritmos mais atuais, como a implementação de rand () do glibc, em geral, utilizam de
aritmética modular e uma formula 𝑋𝑛+1= ( 𝐴 ∗ 𝑋𝑛 + 𝐵 ) 𝑚𝑜𝑑 𝐶 Isso garante duas coisas, a primeira é que
os números estarão contidos entre 0 e C, a segunda é que o resultado, dados A, B e C grandes o suficiente,
bastante difíceis de se calcular, em programas atuais além desse tipo de gerador é comum encontrar um
comando para iniciar a semente à partir de uma variável não inicializada ou o tempo atual do computador, tal pratica tenta randomizar ainda mais as sequencias pois os valores iniciais são desconhecidos.
Números pseudoaleatórios, uma maneira de computadores gerarem números aparentemente
aleatórios, hoje são à base de muitos algoritmos da nossa vida, de criptografia à solução de problemas
matemáticos, problemas que são literalmente resolvidos em uma rolagem de dados.