¿Paso 5: Espere, no es "al azar" esencialmente imposible con microcontroladores?
Pero ¿cómo el microcontrolador con los patrones "aleatorios"?
Chips electrónicos, como el chip PIC32 de Microchip, no tienen alguna forma de subir arbitrariamente con un número de algún tipo, pero qué tiene el chip en el uC32 es una secuencia muy larga de números. Esta secuencia de números se accede a través de la función random(), que elige un número basado en los límites que da. Por ejemplo, con los ocho LEDs que pueden ser encendidos para arriba, la función random() es escrita como random(1,9) escoger un número desde 1 hasta 8. El número superior en la función random() se presume para ser 1 mayor que el rango de salida deseada de la función random().
Mientras que esto es bueno, nos encontraríamos que cada vez juego Simon Says que el patrón de LEDs que iluminan siempre será el mismo porque la secuencia numérica que random() tira desde siempre es el mismo. Para evitar esto y hacer el juego más "al azar" podemos llamar a la función randomSeed() antes de usar la función random(). RandomSeed() dirá el microcontrolador donde empezar a tirar números de la secuencia numérica partiendo de qué valor le damos. Así, podríamos decir randomSeed() para obtener un valor basado en el ruido analógico de uno de los pines de I/O en el microcontrolador, que nos de un lugar "al azar" para empezar en la secuencia del número con la función random().
Sin embargo, ha sido mi experiencia que el ruido eléctrico en un perno tiende a restringirse a un rango muy pequeño de los números, por ejemplo de 0 a 5, que no es absolutamente arbitraria como quisiera. Así, en cambio tienen la recogida de randomSeed() su número de la función millis(), que muestra el valor en el tiempo continuamente corriente contraria dura casi 50 días. Utilizando millis(), donde se lleva a los tirones de la función random() es inherentemente depende de cuánto tiempo el jugador sus valores de presentar su respuesta. Suponiendo que el jugador es humano en lugar de otro microcontrolador, este método garantiza que elegirá un lugar diferente en la secuencia de números cada vez que se juega.