Numeros pseudoaleatórios

1
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.

description

Materia sobre a geração de Numeros PseudoAleatórios

Transcript of Numeros pseudoaleatórios

Page 1: 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.