Como é que uma máquina totalmente lógica, como um computador pode gerar um número aleatório?

Há duas maneiras que os computadores podem gerar números aleatórios:
Você pode criar algum tipo de dispositivo que monitora um evento natural completamente aleatório e envia seus resultados para o computador. Por exemplo, você poderia colocar um pedaço de material radioativo em frente a um contador Geiger e conectar o contador Geiger a um computador. Desde que o decaimento radioativo é aleatório, o contador de Geiger iria criar números aleatórios. Essa abordagem é muito rara, porque muitas pessoas não têm contadores Geiger conectados para suas máquinas. Você pode criar uma fórmula que gera umpseudo-aleatória número. Ao projetar a fórmula, a idéia é para produzir uma sequência de números que iria parecer aleatórios para quem não sabe o que é a fórmula. Características de uma boa fórmula incluem:
· Não repetição: A seqüência não ciclo ao redor e se repita. Boa distribuição numérica: se a fórmula está produzindo números aleatórios entre 0 e 9, o número de zeros, uns, dois, etc., que produz deve ser aproximadamente igual durante um longo período de tempo. Falta de previsibilidade: você não tem como prever qual será o próximo número a menos que você sabe a fórmula e a semente (o valor inicial).
Aqui está um exemplo de uma fórmula simples de número aleatório do livro "The C Programming Language", de Kernighan e Ritchie:
int Rand () {random_seed = random_seed * 1103515245 + 12345;
retornar (unsigned int)(random_seed / 65536) % 32768; }
Esta fórmula supõe a existência de uma variável chamada random_seed, que é inicialmente definido como um número. A variável random_seed é multiplicada por 1,103,515,245 e em seguida 12.345 é adicionado ao produto; random_seed é então substituída por este novo valor. Este é realmente um bom gerador de número pseudo-aleatório. Tem uma boa distribuição e é não-repetição. Se você usá-lo para produzir números aleatórios entre 0 e 9, aqui estão os primeiros 20 valores que produz se a semente for 10:
44607423505664567674
Se você tem produzir 10.000 valores entre 0 e 9, aqui está a distribuição:
0 - 10151-10242 - 10483-9964 - 9885-10016-9967-10068 - 9659-961
Qualquer fórmula de número pseudo-aleatório depende do valor de semente para iniciar a sequência. Se você começar com a mesma semente, você receberá a mesma seqüência de valores da fórmula. Então se você der o Rand () função mostrado acima a semente de 10 em um computador e olhar para o fluxo de números produz, será idêntico ao fluxo de números produzidos em qualquer computador que executa-lo com uma semente de 10. No caso do sistema de posicionamento Global, esta reprodutibilidade é usada como uma maneira de dar a cada satélite um padrão previsível mas diferente dos valores que o receptor GPS pode localizar.
Para criar uma seqüência aleatória e imprevisível , a semente deve ser um número realmente aleatório. Para obter este número realmente aleatório para a semente, a maioria dos programas usa a hora e a data atual, convertido em um valor inteiro (por exemplo, convertido para o número de segundos transcorridos desde 1 de janeiro de 1970). Desde que este é um número diferente toda vez que você iniciar o programa, faz uma boa semente.
Publicado para fins educacionais
Como funciona