¿Cuál es la definición de un número aleatorio verdadero?
Los números aleatorios verdaderos generalmente son relativos a las matrices. Los números aleatorios verdaderos son números sin reglas. No se puede predecir cuál será el siguiente valor. Los números aleatorios verdaderos son algo extraño que se origina en la física. se hace pública la matriz verdaderamente aleatoria obtenida por el fenómeno, ya no es una matriz verdaderamente aleatoria, porque cualquiera que obtenga la matriz puede saber cuál es el siguiente número.
En el pasado, todos tenían el entendimiento común de que las computadoras no pueden generar números aleatorios verdaderos. De hecho, esto se debe a una comprensión insuficiente de las computadoras. Hay muchas formas en que las computadoras generan números aleatorios. un ejemplo:
La característica de algunas funciones en el lenguaje C más utilizado es que el tiempo de ejecución es diferente cada vez que se llama, es decir, el tiempo de ejecución tiene un cierto grado de aleatoriedad. Utilice esta función para obtener los números aleatorios que necesitamos. Estas funciones incluyen Beep (0,0), SetWindowText (NULL), MessageBeep (MB_ICONQUESTION), etc. Es cierto que las funciones en otros idiomas tienen situaciones similares.
Solo necesitamos llamar continuamente a dichas funciones, monitorear su tiempo de ejecución y procesar el tiempo de ejecución para lograr el objetivo. Sin embargo, el tiempo de ejecución de las funciones es muy corto y el método general de medición del tiempo es demasiado aproximado. Debe diseñar su propio método de medición. Cada computadora tiene su frecuencia de operación llamada frecuencia principal, que corresponde al ciclo del reloj. Haga una función para leer el ciclo del reloj desde que la computadora está en funcionamiento y use la cantidad de ciclos que la computadora ha experimentado cuando la función está en ejecución para medir el tiempo. ; mídalo. Deje que la función se ejecute en el número de ciclo actual y luego mida el número de ciclo actual. La diferencia entre los dos números de ciclo menos un valor de fondo representa el tiempo de ejecución de la función. una gran cantidad de tiempo de ejecución, procese la matriz de tiempo de ejecución para obtener una matriz aleatoria.
Veamos los datos experimentales:
El tiempo de ejecución de la función Beep(0,0) es 115636,114283,114899,115030,114488,114350,114866,115132, 114317,114757
p>Si se coloca en la matriz de palabras, hay 50100,48747,49363,49494,48952,48814,49330,49596,48781,49221
Si se coloca en la matriz de bytes, hay 180,107,211,86, 56,174,178,188,141,69
Obviamente, el efecto de colocarlo en una matriz de palabras de 16 bits no es bueno. Esto se debe a que el tiempo de ejecución de la función es solo aproximadamente 0,7 veces mayor. que el valor máximo de 16 bits. Pero ponerlo en una matriz de 8 bits funciona bien y aquí se pueden combinar otros dígitos de datos.
No se ha encontrado ningún fenómeno periódico mediante la detección de generar una gran cantidad de datos, es decir, nunca se repite. Cuando la longitud de la matriz es grande, todos los elementos aparecen con igual probabilidad y buena aleatoriedad, por lo que son. números aleatorios verdaderos.
Aquí hay un programa que genera continuamente grandes números aleatorios: /s/1Dphz