Cómo diseñar un circuito para generar números aleatorios

0

Estoy trabajando en un proyecto, donde necesitamos generar números aleatorios entre 1-5 . Después de investigar un poco, calculo que generalmente se usa LFSR (registro de desplazamiento de retroalimentación lineal) para generar números aleatorios (más preciosamente Pseudo-random ).

Entonces, usé LFSR de 3 bits con el polinomio \ $ x ^ 3 + x + 1 \ $, que genera \ $ 2 ^ 3 - 1 = 7 \ $ números {1, 2, 3, 4, 5, 6, 7} . Ahora necesito asignar de alguna manera {6, 7} a uno de los números {1, 2, 3, 4, 5} .

No puedo usar un circuito mod ya que será determinista. Entonces, ¿cómo puedo aleatoriamente (o pseudo aleatoriamente) mapear {6, 7} a {1, 2, 3, 4, 5} .

No soy un estudiante de electrónica, así que perdóname si la pregunta parece tonta.

    
pregunta Atinesh

3 respuestas

2

Hay muchos circuitos alrededor anunciados como "dados digitales". El enfoque habitual es utilizar un contador que se ejecuta a alta velocidad, durante un tiempo determinado por el tiempo que el usuario presiona el botón. Dado que un ser humano no puede presionar repetidamente un botón durante la misma cantidad de microsegundos, esto produce números aleatorios aceptables.

El enfoque purista es utilizar un fuente de ruido como una unión de silicio (diodos, especialmente Zeners), y amplifíquelo. En un caso adecuadamente protegido, esto producirá un ruido "real" que puede utilizar con fines criptográficos.

    
respondido por el pjc50
1
  

No puedo usar un circuito de mod, ya que será determinista.

todo el algoritmo que está utilizando es determinista: es un generador de números pseudoaleatorios. Los PSNG son muy útiles, ya que suelen ser rápidos y ligeros (tamaño del código). Pero son 100% deterministas.

hay muchas formas de generar números verdaderamente aleatorios, bot analógicos o digitales. En el dominio digital, el uso de lsb de adc es bastante popular, ya que se aprovechan los diferenciales de fase de dos osciladores (en su mayoría osciladores de relajación).

Experimenté algunos aquí: enlace

    
respondido por el dannyf
1

El LSFR que está utilizando es completamente determinista.

Sin embargo, si desea generar de 1 a 5 con la misma probabilidad de una manera pseudoaleatoria utilizando un LSFR, puede usar un estado 4 que tiene 15 estados y asignar 3 estados a cada número de salida. Como esto cuenta hasta 15 estados antes de repetir, la secuencia de 5 salidas no se repetirá cada 5.

Muchas secuencias LSFR de longitud máxima tienen un número de estados que son divisibles por 5. 2 ^ 8 te dan 255 por ejemplo, 2 ^ 12 te dan 4095.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas