Generación de números aleatorios

Arduino:
Generación de números aleatorios

Cómo hacerlo:

Arduino proporciona funciones sencillas para generar números aleatorios: randomSeed() y random(). Para comenzar, inicializa el generador de números aleatorios para asegurar diferentes secuencias de números cada vez que tu programa se ejecute. Un enfoque a menudo utilizado es sembrar con una lectura analógica de un pin no conectado.

void setup() {
  Serial.begin(9600);
  // Inicializa la semilla aleatoria
  randomSeed(analogRead(0));
}

void loop() {
  // Genera un número aleatorio entre 0 y 99
  int randomNumber = random(100);
  Serial.println(randomNumber);
  delay(1000); // Retraso de un segundo para la legibilidad de la salida
}

El programa anterior inicializa el generador de números aleatorios en la función setup() y genera un nuevo número entre 0 y 99 en cada iteración del bucle, sacando el número al Monitor Serie.

Ejemplo de salida:

42
17
93
...

Más Detalles

La función random() de Arduino, bajo el capó, utiliza un generador de números pseudoaleatorios (PRNG), que sigue una secuencia determinista pero parece estadísticamente aleatoria. El valor inicial, o semilla, de la secuencia influye mucho en su imprevisibilidad, de ahí el uso común de randomSeed() con una entrada algo aleatoria como punto de partida. Es importante notar que la aleatoriedad generada por Arduino es suficiente para la mayoría de los proyectos de aficionados pero puede no cumplir con los criterios para aplicaciones de alta seguridad debido a su previsibilidad con el tiempo. Para propósitos criptográficos, es aconsejable investigar algoritmos más sofisticados y generadores de números aleatorios de hardware (HRNG), que pueden proporcionar verdadera aleatoriedad al utilizar procesos físicos.