Geração de números aleatórios

Arduino:
Geração de números aleatórios

Como fazer:

O Arduino oferece funções simples para a geração de números aleatórios: randomSeed() e random(). Para começar, é necessário semear o gerador de números aleatórios para garantir diferentes sequências de números cada vez que seu programa é executado. Uma abordagem frequentemente usada é semear com uma leitura analógica de um pino não conectado.

void setup() {
  Serial.begin(9600);
  // Inicializar a semente aleatória
  randomSeed(analogRead(0));
}

void loop() {
  // Gerar um número aleatório entre 0 e 99
  int randomNumber = random(100);
  Serial.println(randomNumber);
  delay(1000); // Atraso de um segundo para legibilidade da saída
}

O programa acima inicializa o gerador de números aleatórios na função setup() e gera um novo número entre 0 e 99 em cada iteração do loop, exibindo o número no Monitor Serial.

Exemplo de saída:

42
17
93
...

Aprofundamento

A função random() do Arduino, por debaixo dos panos, aproveita um gerador de números pseudoaleatórios (PRNG), que segue uma sequência determinística mas parece estatisticamente aleatória. O valor inicial, ou semente, da sequência influencia fortemente sua imprevisibilidade, daí o uso comum de randomSeed() com uma entrada um tanto quanto aleatória como ponto de partida. É importante notar que a aleatoriedade gerada pelo Arduino é suficiente para a maioria dos projetos de hobbistas, mas pode não atender aos critérios para aplicações de alta segurança devido à sua previsibilidade ao longo do tempo. Para fins criptográficos, é recomendável investigar algoritmos mais sofisticados e geradores de números aleatórios de hardware (HRNGs), que podem fornecer verdadeira aleatoriedade ao utilizar processos físicos.