Una advertencia adicional ... a veces realmente quieres aleatoriedad .
Por ejemplo:
En aplicaciones criptográficas (seguridad / autenticidad), se requiere una aleatoriedad pura "indiscutible". Usar los LSB de un convertidor (aquellos debajo del nivel de ruido) es una forma rápida de generar números puramente aleatorios.
Cuando el hardware ADC está disponible para otros fines (sensores y similares), es una forma rápida y fácil de iniciar una comunicación segura. Puede mejorar el efecto maximizando la ganancia en el amplificador de entrada si está disponible (muchos MCU ofrecen dicha función) y flotando la entrada.
La aleatoriedad de ADC deriva principalmente de dos principios físicos: ruido de cuantización y ruido térmico.
Estos efectos tienen un umbral a nivel macroscópico. Por ejemplo, los números suficientemente alejados del límite de bits no necesitan ser redondeados y, por lo tanto, no experimentan errores de cuantificación o aleatoriedad. El ruido térmico no afecta los bits más significativos en la conversión en la mayoría de los escenarios.
Por extensión, puede ver que al variar los parámetros de conversión (tiempo de muestreo, profundidad, frecuencia, voltaje de referencia) se producirá un cambio en la aleatoriedad de los resultados al mover el umbral de aleatoriedad (ya sea incrementándolo aumentando o disminuyendo disminuyendo el umbral ) Se logra un efecto similar variando los parámetros ambientales / del sistema (temperatura, fuente de alimentación, etc.).
Dicho esto, muchos generadores de números aleatorios de hardware comercial exitosos confían en esta técnica porque los efectos externos solo reducen la aleatoriedad, de ninguna manera la eliminan (físicamente imposible).
Puede compensar una reducción en la aleatoriedad haciendo más conversiones y agregando los resultados. Este proceso de extensión de bits (concatenación de bits bajos de conversiones sucesivas) se utiliza en los dongles nucleares STM32, el FST-01 (incluido NeuG 1.0), la familia de dispositivos Grang de LE Tech y muchos otros.
Los dispositivos Grang generan bits al convertir a más de 400 millones de conversiones por segundo (1 bit por conversión). Si realiza suficientes conversiones, puede garantizar una alta aleatoriedad incluso en condiciones ambientales.