21 votos

Generadores de números aleatorios utilizando un pin GPIO?

Acabo de leer a través de la pregunta AVR Generador de números Aleatorios y se encontró con un número de formas para generar semillas aleatorias en un AVR:

  • El uso de propósito especial "Seguro AVR"
  • El uso de un sensor de temperatura interno
  • Leer no escrita de la EEPROM
  • Medir los intervalos de tiempo entre la entrada del usuario
  • Utilizar un flotante ADC pin.

Por qué no solo de un pin digital, configurado como entrada sin pull-up y flotante? En teoría esto debería generar un flujo de bits aleatorios. ¿Por qué no utilizar esto? Es el estado también cambiando poco a poco? ¿Se tienden a pegado a la 1 o 0? Cualquier otro tipo de problemas?

16voto

userid53 Puntos 116

La evidente diferencia entre el uso de una entrada digital y analógica, es que hay un mayor lapso de semilla de valores posibles en analógico.

En segundo lugar, pero quizás más crucial: Si el pin digital de flotación de "mediana" el valor no es, precisamente, a mitad de camino entre la lógica de sentido niveles (que no son el poder y el carril de tierra de los niveles, pero umbrales de conmutación para el circuito de entrada) la resultante de la secuencia de bits tiene un fuerte sesgo hacia la 1 o 0. Este sesgo se inclina semillas mucho más fuerte que un sesgo en analógico niveles.

Se necesitaría muy poco de acoplamiento, ya sea cerca de rastros o señales, o a través de algunas de resistencia de pull-up / pull-down, si diseñados o accidental, para impulsar un "flotante" pin digital para unfloat - y que como bien podría suceder después de la implementación. En la ingeniería de cualquier diseño, esta forma de modo de fallo es mejor evitar.

10voto

chris Puntos 71

La solución más simple es la construcción de un hardware aleatorio generador de señal de circuito de un indebidamente de colector abierto transistor del circuito. Utilizar el flujo de bits de salida a una entrada en el micro-controlador. Muestra el entrante bits en los intervalos. Para asegurarse de aproximadamente un número par de 1s y 0s, utilice simplemente el cambio de estado como un 1 y no hay cambio como un cero. Google transistor generador de ruido para obtener más información.

5voto

GSerg Puntos 33571

"Al azar" es una palabra difícil. En algunos contextos, significa simplemente "impredecible", pero en otros contextos, en particular, las asociadas con el procesamiento de la señal y la criptografía — que significa "estadísticamente correlacionados".

Incluso si el valor leído de un pin flotante es impredecible ("random" en el primer sentido), no es probable que sea útil en el segundo sentido.

3voto

ozmank Puntos 127

La calidad de la semilla aleatoria y su algoritmo está determinado por la cantidad de entropía o la incertidumbre en cada aleatoria de bits. Entonces, el mejor generador de una semilla usos de alta entropía con muy pocos pasos, en lugar de muchos pasos de la baja entropía.

Un buen ejemplo de la alta entropía utiliza los Cuadrados latinos método para que una semilla aleatoria.

La variable de entrada es fácilmente sesgada por fallas, fugas o filtraciones de ruido.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X