Como funciona o método Math.random? Como é possível programar uma máquina para fazer algo aleatório?

Como seria programar um computador para fazer algo aleatório? É como fazer um cálculo na calculadora, que devolve números aleatoriamente?

O Math.random() não é aleatório de verdade. Ele simula uma distribuição uniforme no intervalo [0.0, 1.0[. Em outras palavras, ele simula o seguinte comportamento: se você chamar Math.random() infinitas vezes, todos os doubles entre 0.0 (inclusivo) e 1.0 (não inclusivo) tem exatamente a mesma chance de acontecer.

É apenas uma equação. Ela começa com um número qualquer, geralmente chamado de seed, e vai iterando sobre esse número toda vez que um novo número aleatório é pedido.

Algo bem comum para se tentar um seed “aleatório” é ler o valor de uma porta analógica qualquer do processador, que não esteja conectada a nada. A própria oscilação da eletricidade faz com que o valor pareça aleatório e imprevisível.

Na maioria das vezes esse comportamento, chamado de “pseudo-random” é suficiente.

Alguns argumentam que é virtualmente impossível gerar números de forma realmente aleatória, acreditando que aleatoriedade não existe de verdade. O que acontece é que a gente não conhece todas as variáveis que influenciam um sistema, e por isso parece que é aleatório.

1 curtida

Entendi, que legal. Saindo um pouco desse assunto de programação, antigamente, os físicos pensavam que se soubéssemos todas as posições e energia de todas as partículas do universo, poderíamos prever o futuro, e calcular o passado. Mas isso veio antes da mecânica quântica e sua natureza probabilística, onde simplesmente é impossível dizer com exatidão a energia e posição de uma partícula, porque ela assume várias realidades até ser observada

1 curtida