9 votos

¿Cuáles son las diferencias entre la función rand() y RNG (Random number generator) periférica?

Estoy de maravilla para el RNG (Random number generator) periférica en STM32F4XXXX Mcu. buscar en este Manual de Referencia (página 748). Por otro lado, tenemos la función rand() en la biblioteca stdlib que hacer la misma tarea. Ahora tengo dos preguntas:

  1. ¿Cuáles son las diferencias (ventajas y desventajas) entre la función rand() y RNG (Random number generator) periférica?
  2. Mira esta parte:

features

Por favor explique acerca de las mismas a la opción (especialmente la segunda opción).

12voto

Mishyoshi Puntos 1220

Dave respuesta, bastante bien continuar con ella, pero para aclarar un poco más en la segunda opción:

un hardware real generador de números aleatorios se utiliza un físico de la entropía de la fuente. Dicho de entropía de la fuente podría ser cósmico de radiación, ruido eléctrico, avanlanche efecto de invertir la sesgada (diodo o transistor BJT), circuito de chua, etc. Al menos determinista de la entropía de la fuente, mejor será la calidad de la aleatorios de salida. Un ideal de la entropía de la fuente sería el uso de una física cuántica efecto, o algo que quizás no se modelan con ecuaciones deterministas.

Otro factor importante con generadores de números aleatorios es que la entropía de la fuente puede generar sólo una cantidad limitada de entropía por unidad de tiempo. Un buen ejemplo es el circuito de chua: mientras que es bastante aleatorio, que tiene muy baja velocidad y no puede ser utilizado para aplicaciones en la vida real.

En muchos procesadores y microcontroladores con construido-en generadores de números aleatorios, el reloj de la deriva de los 2 a los 4 relojes que están deliberatly sincronizan incorrectamente se utiliza. A continuación, utilizan filtros analógicos y digitales para aleatorizar aún más el patrón y el cambio en el resultado en un registro. La realización de este filtrado requiere un par de ciclos, lo que explica la cantidad mínima de ciclos requeridos en un determinado reloj antes de la más reciente está disponible.

El reloj de la deriva no es un efecto cuántico, por lo que podría ser modelo, pero es lo suficientemente aleatorios, debido a que se depende de un montón de parámetros, tales como la temperatura, el silicio proceso, la frecuencia de operación, el ruido eléctrico de fondo, radiaciones, etc.

En aplicaciones donde el hardware RNG no tiene suficiente rendimiento (como en exigentes aplicaciones criptográficas), es muy común utilizar el hardware RNG como una semilla para un pseudo generador de números aleatorios, tales como la función rand() en el sdtlib. Sin embargo, de aplicación general, proporcionar una mejor aplicación de la función rand (), que está diseñada específicamente para ejecutar desde una semilla que puede ser descartados muy a menudo con verdaderos valores aleatorios. En el más reciente procesador Intel integrado con el hardware de generadores de números aleatorios, el pseudo-aleatorio algoritmo parte está directamente integrado en el silicio, por lo que se realiza por hardware, con un rendimiento muy alto rendimiento aleatorio.

Si la mente sobre el rand() el método en sí, es sólo un methematical de expresión, que está diseñado para generar una gran cantidad de entropía. Lo suficientemente grande dependiendo de la aplicación: para las claves criptográficas de las generaciones, la aleatoriedad es obligado a ser de mayor calidad que la aleatoriedad se requiere para un simple aleatoria shuffle favoritos en tu reproductor de música. Es obvio que cuanto mayor sea la calidad de lo aleatorio de salida, mayor es el coste computacional del número aleatorio.

Las operaciones que intervienen en un número aleatorio son bastante parecida a la de uno de los involucrados en el cálculo del hash MD5 de un archivo: tratan de utilizar un tipo de poco el efecto de avalancha, de modo que un solo bit de cambio en el valor de la semilla de los cambios de la totalidad de la generación de patrón. Como una nota del lado, yo NO recomiendo el uso de MD5 como un generador de números pseudoaleatorios; era sólo un ejemplo. Sería ineficiente y no de manera aleatoria, pero el punto es: si usted alimenta a la misma archivo MD5 hasing algoritmo, siempre obtendrá el mismo determinista de salida, bastante mucho la misma manera que se haría para obtener siempre el mismo resultado de la función rand() si la entrada de la misma semilla, a menos que su implementación depende de la arbitraria de elementos tales como la hora actual.

7voto

GSerg Puntos 33571

La diferencia clave es que el rand() función de la biblioteca es un pseudo aleatorios generador de número dado cualquier partida particular (semilla) de valor, se producirá siempre la misma secuencia de números.

Por otro lado, el RNG periférico es un verdadero generador de números aleatorios, y se va a producir no repetible secuencias de números.

2voto

afx Puntos 221

Los dos temas de contorno puede ser descrito con relativa facilidad:

  • 1: no Se puede generar números aleatorios más rápido de lo que una vez cada 40 ciclos de reloj, por lo que esto se traduce en 48MHz/40 = ~1M de la Muestra/s
  • 2: El hardware contiene un monitor en la que se comprobará cada número generado por extraño comportamiento. E. g. si usted utiliza la temperatura como una fuente y había una gran estabilidad de la temperatura ambiente, puede suceder que el RNG podría generar el mismo número de secuencias de nuevo un nuevo (como un generador de números pseudoaleatorios haría si usted comienza con el mismo valor de la semilla). El componente monitor de esto y se le proporcionará una señal si el RNG funciona como se espera. En caso de que necesite sus números para ser "realmente" al azar, puede que desee monitorear este indicador para ver si realmente son. Cómo exactely esto se hace y cómo el generador de números aleatorios realmente funciona es probablemente dada en el resto del texto.

1voto

Alex Andronov Puntos 178

Supongamos que uno de los diseños mecánicos de ruleta de rueda de ruleta que da energía a un motor para un cierto periodo de tiempo, espera a que la rueda y la bola de llegar a descansar, y observa que el bolsillo de la pelota. Normalmente después de cada giro de la bola y la rueda va a terminar de una manera ligeramente diferente lugar, y pequeñas variaciones en la ubicación de la pelota después de una vuelta se puede hacer una gran diferencia en donde termina en la siguiente vuelta. Por lo tanto, incluso si el motor está siempre activado para el mismo periodo de tiempo, el bolsillo, donde una bola cae en uno tirada será independiente de donde aterrizó la vuelta antes.

Ahora supongamos, sin embargo, que algunos de los números de tener o desarrollar las depresiones leves en ellos, y el motor de rodamientos de desarrollar manchas planas. Luego de algunas vueltas iba a ser al azar, pero después de un giro que se traduce en la pelota que aterriza en una depresión y el rodamiento en un lugar plano, la siguiente vuelta podría muy bien ser sesgada hacia tener el mismo resultado que en la última vuelta donde se produjeron. Si la mayoría de los espines no simultáneamente golpeó la chuleta y punto plano, su existencia probablemente no afectan demasiado las cosas. Por otro lado, si uno de hierba plana/combo de pasar a ser colocado justo a la derecha de modo que una bola no le razonablemente consistente de la tierra en un segundo, y que uno pasa a ser colocados para enviar el balón a la primera, entonces uno termina con un muy sesgada de los comportamientos.

Si, después de aterrizar en 4 y 23, de la siguiente tirada es un 4, que no indica necesariamente un problema. Un 4 " debe aparecer sobre 1/38 de el tiempo en esa situación. Además, la adquisición de datos aleatorios sólo debe capturar el número de bolsillo, ya que nada de lo útil se sabe acerca de cómo a menudo la pelota debe descansar en diversas partes del bolsillo. No obstante, puede ser útil para cualquiera que sea la grabación de los números también "observar", donde en el bolsillo de la bola se detiene y mira para cualquier patrones inusuales. La distribución de lugares podría estar sesgada hacia el frente o hacia atrás, sin indicar un problema, pero si hay un estrecho pico en la distribución que podría ser causa de preocupación.

Si lecturas consecutivas de un generador de números aleatorios son estadísticamente independientes, además de compensar el sesgo no es difícil (aunque el tiempo requerido es no determinista). Si, sin embargo, un generador cae en un estado en el que las lecturas no son independientes (por ejemplo, el estado cíclico de la rueda), la compensación se convierte básicamente imposible, por lo que la necesidad de un hardware RNG para incluir circuitos para detectar este tipo de comportamientos.

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