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:
- simulações - aplicações de modelos científicos na simulação de fenômenos naturais.
- amostragem - aplicações de modelos científicos baseados numa parte menor de um todo maior, que será analisada.
- análise numérica - aplicação de modelos determinísticos numéricos para economia de tempo de computação.
- programação de computadores - aplicação de valores aleatórios para testes de eficiência algorítmica computacional.
- teoria de decisão - auxiliar a tomada de decisão com base na escolha de dados.
- 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