¿Cómo puede una máquina lógica como una computadora generar un número aleatorio?

Una pregunta más precisa podría ser “¿Cómo puede una máquina determinista generar una secuencia de números aleatorios?”
Respuesta: No puede generar un número verdaderamente aleatorio.

determinismo [Aquí hay una explicación interesante de determinismo, no determinismo y aleatoriedad] significa que si le da a estas máquinas las mismas entradas, obtendrá exactamente la misma salida. Entonces, en una máquina (computadora) perfectamente determinista, nunca puede generar ninguna secuencia, es realmente aleatoria porque la computadora ejecutó algún algoritmo para darle la salida.

Puede escribir su propia función rand (), por ejemplo

doble rand () {
retorno ((semilla * 5256 + 58/65536)% 2 << 31);
}

la calidad de esta función dependerá en gran medida de su valor de semilla y de lo difícil que sea predecir el valor de la semilla, por ejemplo, si su programa buscaminas usa la fecha y hora actual hasta milisegundos como semilla, puede registrar ese valor y calcular las posiciones de minas de antemano. Hacer que el juego no tenga sentido.

La única forma de obtener un número verdaderamente aleatorio (uno que no puede predecirse con la tecnología actual) es monitoreando eventos / variables que no pueden predecirse, como el ruido atmosférico, la desintegración radiactiva, el calor / ruido generado por el hardware de su computadora, transistores, diodos, etc. .

Piense en ello como una ecuación matemática donde una ecuación con demasiadas variables se puede decir como una función pseudoaleatoria, mientras que la ecuación con infinitas variables proporciona una función de generador de números verdaderamente aleatorios.

Echa un vistazo: ¿Cómo puede una computadora totalmente lógica generar un número aleatorio?

La única aleatoriedad verdadera en el universo proviene de los efectos cuánticos. Entonces, si desea generar números aleatorios verdaderos, conecte un contador Geiger a su computadora. 🙂

La mayoría de los generadores de números aleatorios, como la función random () de C, son pseudoaleatorios , ya que utilizan algoritmos deterministas para calcular los números “aleatorios” y estos números se repetirán después de un número muy grande de veces. (Qué tan grande define qué tan bueno es el algoritmo).

Hay algunos otros, como / dev / random en sistemas operativos tipo Unix, que usan ruido ambiental (como golpes de teclado, tráfico de red, etc.) para calcular números aleatorios. Estos procesos, aunque no son verdaderamente aleatorios, producen números aleatorios lo suficientemente buenos para la mayoría de los propósitos.

Se llama pesudo generador de números aleatorios. Un verdadero generador de números aleatorios necesita un elemento de ruido como ruido cuántico, ruido de diodos, ruido ambiental y secuencia de lanzamiento de monedas. El grado de aleatoriedad del generador depende de su fuente. Por ejemplo, el ruido de diodo no es demasiado aleatorio, hay algunos documentos para explicar por qué no debe usarlo. Alguien realizó una prueba y dijo que si arrojas una moneda por 10000 veces y siempre mantienes la cabeza en la parte superior, entonces puedes recibir 5001 caras.

Hay ciertos algoritmos que involucran números primos de Mersenne y, para ser sinceros, son números pseudoaleatorios, no exactamente números aleatorios.

Algoritmos de generación de números pseudoaleatorios

More Interesting

¿Cuáles son los algoritmos más versátiles para resolver problemas de empaque 3D?

¿Cómo se descubre la estructura en patrones bidimensionales?

Se nos dan probabilidades [matemáticas] P (A) = P (B) = P (C) \ geq 2/3 [/ matemáticas] y sabemos que [matemáticas] P (A \ cap B \ cap C) = 0 [/ mates]. ¿Qué podemos decir sobre [matemáticas] P (A) [/ matemáticas]?

Un juego de 64 discos de Tower of Hanoi es jugado por un programa que realiza movimientos a una velocidad creciente. Comienza a 1000 movimientos por segundo. ¿Cuánto tiempo tomará?

¿Cuál es la forma más rápida de determinar si una serpiente tiene un camino hacia su cola?

¿Por qué el Complemento 2 se llama Complemento 2 '?

¿Qué es una mónada?

¿Cómo es ser un experto en matemáticas trabajando como ingeniero de software?

Cómo calcular la varianza esperada en el tiempo (t) dada una deriva y volatilidad conocidas

¿Cómo se animan dos arcos usando matplotlib?

¿Cuándo requerimos hacer una transformación no lineal o reducción de dimensiones como el kernel PCA?

¿Hay ejemplos fractales que usen entradas aleatorias externas de alguna manera en las iteraciones?

¿Puede la ciencia / psicología cognitiva ayudarlo a comprender otras áreas más rápidamente, como las matemáticas, la física y la informática?

Cómo construir una computadora fuera del agua, y cómo ayuda esto con Navier-Stokes

Hice un programa en C que nos da la tabla de distribución normal, pero debo hacer un archivo Excel desde C. ¿Cómo puedo hacer esto?