25 votos

¿Es posible generar números verdaderamente aleatorios usando una computadora?

Sé que hay muchos algoritmos para generar números pseudoaleatorios pero, ¿es posible generar números verdaderamente aleatorios usando un programa de computadora?

48voto

JoshL Puntos 290

Esta es una buena pregunta, pero para profundizar en ella tenemos que mirar las suposiciones subyacentes.

Primero, para el propósito que nos ocupa, no tiene sentido decir que un número en sí mismo es aleatorio. Hay una sensación de que un número en particular es aleatorio a partir de la complejidad de Kolmogorov, pero eso no es lo que se pretende aquí. En su lugar, lo que nos interesa podría llamarse un proceso al azar - un proceso que genera una secuencia de números para que la secuencia satisfaga alguna distribución de probabilidad particular. Queremos saber si una computadora puede generar una secuencia de números de manera aleatoria.

La siguiente pregunta es qué queremos decir con "usar un programa de ordenador". Si tomamos un "programa de ordenador" como un algoritmo completamente determinista, entonces no será capaz de generar números de una manera verdaderamente aleatoria. No hay ningún programa de ordenador que pueda ser simulado enteramente con papel y lápiz - de forma determinista - que genere números de forma aleatoria. El siguiente número de la secuencia es siempre completamente predecible! La siguiente pregunta es qué queremos decir con "usando un programa de ordenador". Si tomamos un "programa de ordenador" como un algoritmo completamente determinista, entonces no será capaz de generar números de una manera verdaderamente aleatoria. No hay ningún programa de ordenador que pueda ser simulado enteramente con papel y lápiz, de forma determinista, que genere números de forma aleatoria. El siguiente número de la secuencia siempre es completamente predecible.

Sin embargo, si estamos dispuestos a añadir hardware adicional, entonces podría llegar a ser capaz. Esta es una noción más amplia de "programa". Por ejemplo, las máquinas que se utilizan para extraer los números ganadores de una lotería están diseñadas, esencialmente, para tratar de generar números de forma aleatoria. No hay razón para que una de ellas no pueda ser conectada a una computadora y automatizada. Así que, si aceptamos que la lotería puede generar números al azar, también puede hacerlo una computadora.

También hay métodos más rápidos. Algunos sistemas operativos intentan reunir información aleatoria del entorno, almacenarla y devolverla cuando se les pide que generen un número aleatorio. Este no es un proceso determinista, pero teóricamente genera números de manera aleatoria. Por ejemplo, la computadora puede medir el ruido blanco, o puede medir el tiempo de varios eventos como las pulsaciones de teclas y la llegada de paquetes, y combinarlos de una manera teóricamente válida para generar números al azar.

La última cuestión es filosófica. Algunos podrían creer que todo el universo es determinista, y por lo tanto nada es siempre aleatorio. Sin embargo, esa objeción está demasiado lejos para la presente conversación. Si queremos preguntar si los ordenadores pueden generar números de forma aleatoria, normalmente se da por hecho que algo podría generar números de forma aleatoria, para que podamos centrarnos en si los ordenadores pueden hacerlo.

19voto

Razin Puntos 6

Después de buscar en Internet, he decidido responder a mi propia pregunta aquí. Es posible generar números verdaderamente aleatorios. Los números aleatorios se generan a partir de procesos aleatorios impredecibles como los ruidos térmicos o atmosféricos, las radiaciones cósmicas, etc. Necesitamos hardware especial o sensores que puedan medir tales procesos y podría haber un programa que pueda producir un número a partir de la entrada de eventos aleatorios. Como este método utiliza eventos aleatorios en lugar de un algoritmo predefinido, puede generar un número verdaderamente aleatorio.

Puede encontrar una de estas soluciones en línea en https://www.random.org/ . Random.org utiliza el ruido atmosférico para crear aleatoriedad.

Finalmente, aquí hay un chiste:

Random number

9voto

Horst Grünbusch Puntos 223

Sí desde un punto de vista teórico, no desde un punto de vista práctico.

Es posible con un programa que acceda al módulo wifi en los ordenadores de venta. La idea detrás de esto se describe aquí : Se registran los cambios aleatorios en el nivel de ruido. Este ruido es generalmente aceptado como aleatorio (sólo gira tu radio AM a alguna frecuencia desocupada durante el día y escucha el ruido que produce la atmósfera. Lo mismo ocurre en las frecuencias de ~2 GHz en las que operan nuestros módulos wifi). Creo que siguen algún tipo de proceso de poisson, por lo que el tiempo entre los cambios de ruido sigue alguna distribución exponencial.

Tal vez también se podrían usar objetos giratorios como el ventilador de refrigeración o el disco duro como una especie de rueda de la fortuna, ya que su velocidad de rotación puede ser controlada y grabada por el software.

Sin embargo, estos números aleatorios tienden a tener un gran inconveniente: No sabes su verdadera distribución. Así que son inútiles para la mayoría de las aplicaciones, excepto si tomas el número aleatorio para sembrar un generador de números pseudo aleatorios ordinario (pRNG). Entonces los números pseudo aleatorios resultantes son un poco menos "pseudo" pero aún tienen una distribución (frecuencia) conocida.

Las fuentes de aleatoriedad útil con una distribución mejor comprendida suelen necesitar dispositivos que ya no forman parte de las computadoras habituales. Esos dispositivos tienen que cumplir con especificaciones muy estrictas para producir las probabilidades deseadas. Las computadoras habituales no lo hacen: No saben cuánto se ha desgastado el cojinete de su ventilador de refrigeración, qué ruido aleatorio recibe su wifi actucalmente, etc.

Otro inconveniente: Generar números aleatorios reales es mucho más lento que los pRNGs, incluso si tienes un dispositivo especializado que observa algún decaimiento radioactivo para producir números aleatorios. Así que puedes terminar de nuevo con la producción de sólo la semilla para el pRNG al azar.

5voto

J.-E. Pin Puntos 5730

La respuesta es no, pero primero hay que dar una definición precisa de aleatoriedad. Te sugiero que leas la entrada de Wikipedia Secuencia algorítmica aleatoria . Si se utiliza la definición de Martin-Löf (una secuencia es aleatoria si hay un límite uniforme en la compresibilidad de sus segmentos iniciales), puede demostrarse que ninguna secuencia aleatoria es decidible, computablemente enumerable o co-computablemente numerable.

5voto

Alan Puntos 11

Conozco una herramienta que usa la descomposición radioactiva para generar números aleatorios verdaderos, se encuentra aquí .

Generar una verdadera aleatoriedad desde un simple ordenador sin hardware adicional no es posible, que yo sepa.

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