Gerando Números Aleatórios

Esse artigo pretende introduzir o funcionamento e os tipos de algoritmos que fazem a geração de números randômicos.

[ Hits: 9.288 ]

Por: Pablo Margreff em 25/06/2015 | Blog: https://pmargreff.wordpress.com/


Introdução



A ideia deste artigo veio ao ver um episódio da série Elementary, onde um grupo invade um cofre adivinhando a aleatoriedade da senha, e foi muito impulsionado após ler uma série de quatro artigos da revista portuguesa Programar, que aborda alguns métodos para a geração de números aleatórios.

Exemplos de áreas de aplicação:
  1. simulações - aplicações de modelos científicos na simulação de fenômenos naturais.
  2. amostragem - aplicações de modelos científicos baseados numa parte menor de um todo maior, que será analisada.
  3. análise numérica - aplicação de modelos determinísticos numéricos para economia de tempo de computação.
  4. programação de computadores - aplicação de valores aleatórios para testes de eficiência algorítmica computacional.
  5. teoria de decisão - auxiliar a tomada de decisão com base na escolha de dados.
  6. recreação - jogos de azar.

Pseudo Random x True Random

O método chamado true random utiliza sensores para fazer a leitura de inúmeras variáveis ambientes, a imprevisibilidade dos dados e/ou desordem é chamada de entropia (entropia na verdade é a grandeza usada para medir a irreversibilidade de algum sistema, proveniente da 2ª lei da termodinâmica).

Em sistemas feitos especialmente para isso são combinados dados com a taxa de decaimento atômico, temperatura, umidade, ruído atmosférico etc. Em sistemas não especializados em tal finalidade isso é feito com um drive qualquer, como um leitor óptico combinado com alguma outra entrada (mouse, teclado, usb) que pode gerar um número aleatório baseado nestes sensores.

Porém isso não é usual, pois o comportamento humano é uma das coisas que passa mais longe de ser classificada como aleatória, o que abre uma séria brecha para falhas de segurança. Um bom exemplo de uso de sistemas que usa este tipo de geração aleatória é o PGP, que quando está em fase de criação da sua chave privada pede que você utilize o computador normalmente, e utiliza quaisquer bits gerados pelos vários devices para gerar sua chave.

Outro exemplo é o famoso site random.org utiliza um sensor de rádio para capturar ruídos atmosféricos em diversas faixas de frequência, e a partir disso gerar um número transformando a entrada em sinais elétricos.

O gerador pseudo aleatório funciona de maneira um pouco diferente do primeiro apresentado, e é construído a partir de um valor inicial, e permutado baseado em uma semente (seed) ou chave. Pelo fato deste fenômeno (combinação) ter uma range muito menor, ele tem uma maior probabilidade de previsão. Porém vale a pena ressaltar que os algoritmos estão sendo aprimorados de tal forma que realmente parecem ser aleatórios.

Mas uma pessoa com conhecimento matemático e em mineração de dados consegue encontrar um padrão (não sem algum esforço) para a reconstrução do algoritmo. Uma das principais diferença é que o pseudo random é extinguível, pois é gerado a partir de uma fórmula matemática.

Se a sua entrada for em ordem sequencial, a saída terá um padrão. Outro caso ondem este tipo de gerador pode ser usado é em aplicações onde podem ocorrer repetições dos valores gerados não tire a integridade ou funcionalidade de programa. As ocorrências famosas são as funções que geram números aleatórios nas mais diversas linguagens.

Fonte: Random number generation - Wikipedia, the free encyclopedia

    Próxima página

Páginas do artigo
   1. Introdução
   2. Os primórdios
   3. Atualidade
Outros artigos deste autor

Aumentando sua produtividade com o teclado padrão Dvorak

Manipulação de imagens no formato PPM

Algoritmos de compressão

Leitura recomendada

Upload Seguro de Arquivos em Aplicação Backend com Spring Boot, ClamAV e JWT

JlGui - Java Media Player

Transforme seu celular em terminal sem fio SSH/Telnet

Desenvolvendo aplicações em J2ME no Linux

Gerando logs em Java

  
Comentários
[1] Comentário enviado por albfneto em 25/06/2015 - 12:44h

é excelente esse artigo. favoritado!
se ainda houvessem notas para os artigos, 10 para esse!
Não sou da área, mas fica uma sugestão.
em um segundo artigo, se tiver tempo, revise, teste e classifique diversos
pacotes já existentes para gerar números aleatórios.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].

[2] Comentário enviado por pmargreff em 25/06/2015 - 15:58h


[1] Comentário enviado por albfneto em 25/06/2015 - 12:44h

é excelente esse artigo. favoritado!
se ainda houvessem notas para os artigos, 10 para esse!
Não sou da área, mas fica uma sugestão.
em um segundo artigo, se tiver tempo, revise, teste e classifique diversos
pacotes já existentem para gerar números aleatórios.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Boa sugestão, talvez agora nas férias isso aconteça.

[3] Comentário enviado por viana3 em 26/06/2015 - 20:44h


Muito interessante o artigo, poderia ter exibido alguns códigos geradores de números aleatórios. Outra dica seria o uso desses geradores no Método de Monte Carlo.

[4] Comentário enviado por removido em 29/06/2015 - 01:23h

O algoritmo Rho-Pollard também gera uns aleatórios, exceto por uma característica cíclica que o transforma em um fatorador.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts