¿Puede una computadora generar un número verdaderamente aleatorio?

Esta es una pregunta muy interesante. Mi amigo y yo tuvimos una discusión al respecto el otro día. No soy un programador de computadoras, mi respuesta se basará en la lógica y el conocimiento básico.

Digamos que una computadora genera un número aleatorio basado en el aire que fluye en una coordenada particular, podemos decir que la velocidad del aire es un número aleatorio, pero ¿es realmente un número aleatorio? Digamos que el flujo de aire estaba controlado por la corriente de Labrador, que a su vez estaba controlada por las corrientes del golfo, esto continúa para siempre hasta que se forme un circuito, por ejemplo: flujo de aire en coordenadas controladas por Labrador controlado por la corriente del golfo controlada por el aire flujo en la coordenada, cualquiera de los valores anteriores nos ayudará a determinar el otro haciendo que el sistema sea determinista.

Ahora supongamos que la Tierra es un sistema cerrado y libre de energía externa, en ese caso los bucles eventualmente seguirían formando, haciendo que la Tierra sea un sistema determinista, pero la Tierra no es un sistema cerrado, es suministrado por energías externas de todo el universo. Suponiendo que el universo es infinito, tenemos infinitas posibilidades y las cosas pueden ser aleatorias. Supongamos que el universo no es infinito, se formarán bucles y las cosas pueden ser deterministas, aunque imposibles de calcular.

Esta teoría la proporciono únicamente yo y puede tener fallas infinitas, no la use como referencia.

Hasta donde yo sé, hay dos formas principales en que una computadora puede elegir un número “aleatorio”: usando un generador de números pseudoaleatorios (PRNG) , o usando un generador de números aleatorios de hardware .

Un generador de números pseudoaleatorios, como su nombre indica, no es realmente aleatorio. Los PRNG suelen utilizar algoritmos deterministas como los generadores de Fibonacci rezagados o el tornado de Mersenne. Estos números generados por estos algoritmos están completamente determinados por el estado inicial y eventualmente se repetirán. Sin embargo, una buena elección de parámetros para los algoritmos hará que el período sea lo suficientemente grande para el uso práctico (2 ^ 19937 – 1 para el tornado de Mersenne).

Por otro lado, se supone que un generador de números aleatorios de hardware es verdaderamente aleatorio, en el sentido de que se basa en el ruido generado por procesos físicos, por ejemplo, el muestreo del ruido ambiental de una tarjeta de sonido.

Se puede encontrar información más detallada en:
1. http://en.wikipedia.org/wiki/Pse
2. http://en.wikipedia.org/wiki/Har

La historia de los números aleatorios recorre un largo camino. Como una de las respuestas señaló que el primero de los métodos fue el método de los cuadrados medios de Von Neumann, en el que tomas los k dígitos medios de un número y lo cuadras y obtienes una serie de números. El problema con este enfoque es que en algún momento aparece un número como x0000000000 y el número aleatorio que genera es 0000, lo que da 00000 después, en resumen, el período máximo (que es una de las medidas de efectividad para un método de generación de números aleatorios) ) es menos. El otro problema que ocurre en este método es que encontrarás una secuencia de números que se repite una y otra vez, un fenómeno conocido como ciclicidad.

Un número aleatorio debe satisfacer dos propiedades importantes: 1) debe seguir una distribución uniforme 2) debe ser independiente de otros números aleatorios creados.

Posteriormente, un matemático llamado Derrick Henry Lehmer propuso en 1951 un método cuyas variaciones hasta la fecha se utilizan en las computadoras.
El método como tal es simple: uno debe proporcionar un número de semilla X0, a, myc, luego X1 es ((a * x0) + c) mod m. Luego se realizan iteraciones sucesivas de esa manera. El número aleatorio r1 sería: r1 = x1 / m. Este método tiene un período excepcionalmente grande con un máximo de 2 ^ b si m es 2 ^ b. Este método se llama como la técnica congruencial. Además, este método tiene sus condiciones inherentes dependiendo de qué período puede variar. Pero el método es tan robusto que son posibles los números de más de 2 mil millones del período. He intentado crear 85000+ números aleatorios y no encontré una sola repetición.

Además de esto, un matemático llamado Pierre L ‘Ecuyer generó números aleatorios con un período de hasta 2 ^ 191 cuenta con una variación conocida como generadores congruenciales combinados del algoritmo original.
Así es como la computadora genera un número aleatorio.

& La computadora no genera un número aleatorio como tal, se llama como un número pseudoaleatorio por una razón. Pero la aleatoriedad del número aleatorio generado por la computadora es lo suficientemente aleatorio para la mayoría de las aplicaciones. Si desea probar números aleatorios, puede usar la prueba de Kolmogorov-Smirnoff para una distribución uniforme o una prueba de autocorrelación para probar qué tan aleatoria es una secuencia de números aleatorios.

Sí, las computadoras pueden generar números aleatorios.
Algunas computadoras tienen hardware especial que utiliza aleatoriedad cuántica o fluctuaciones aleatorias en el campo eléctrico alrededor de la computadora para generar números aleatorios.
Las CPU Intel modernas incluyen dicho mecanismo.

Si no existe dicho hardware, las computadoras aún pueden generar números aleatorios.
Si hay usuarios en su computadora (por lo que estamos hablando de una PC o computadora portátil, no de un servidor), puede pedirle al usuario que dibuje líneas en la pantalla. Para cada línea, calcule la longitud y verifique si es par o no. Entonces, por cada línea dibujada, obtienes un poco de aleatoriedad.

Alternativamente, puede hacer ping a un servidor remoto (es decir, enviar un mensaje especial al servidor remoto para ver cuánto tarda un mensaje en llegar y regresar) y nuevamente verificar si el tiempo que tarda el mensaje en volver es extraño o incluso.

Si no está conectado a Internet, debería ser más creativo. Si usa su CPU ampliamente, se calentará y eventualmente se acelerará (para evitar daños), probablemente podría obtener algo de aleatoriedad.

En general, no lo hace, como lo explican otros.
SIN EMBARGO, puede generar números pseudoaleatorios y, además, puede acercarlos a la aleatoriedad real mediante el uso de semillas aleatorias.
¿Cómo obtendrías una semilla aleatoria? Bueno, su computadora en sí no proporciona aleatoriedad, al menos no de una manera obvia. Pero la entrada puede. Puede, por ejemplo, usar un termómetro para medir la temperatura de su habitación y usarlo como semilla. Puede descargar la primera imagen en imgur y luego acceder al píxel en un índice pseudoaleatorio y usarlo como semilla. Incluso podría hacerlo cada vez que necesite generar un número aleatorio, por lo que no dependería de nada tan predecible (el algoritmo es reproducible para una semilla determinada, por lo que con suficientes muestras, alguien podría descubrir cuál es la semilla; esto se hace comúnmente en me gusta, donde deducen la semilla y luego pueden predecir el resultado de varias actividades). Si usa una semilla aleatoria real, cuanto más a menudo cambie, menos predecibles serán sus números. Sin embargo, si usa su tiempo actual, es probable que pierda imprevisibilidad, ya que las personas podrán deducir cuánto tiempo le toma desde que establece la semilla y genera el número y lo predice en función de ello.

Las computadoras generan números aleatorios y no lo hacen. Eso depende de cómo se defina la aleatoriedad. El generador de números prácticamente aleatorio debería generar números desprovistos de cualquier patrón y el siguiente en la secuencia no debería ser discernible de ninguna manera. Hay ciertos algoritmos criptográficos que logran lo mismo a un nivel deseable. Pero cualquier algoritmo de este tipo es un proceso computacional que en términos reales no puede designarse como “Aleatorización verdadera”.

El proceso de generar números aleatorios verdaderos implica diseñar una función de medida de algún proceso físico, por ejemplo, la velocidad del viento, la actividad del campo electromagnético, el ruido térmico o acústico, la desintegración radiactiva.

Como se trata de procesos naturales, tal vez se pueda “asumir” que no tiene un patrón reconocible en su ejecución. Pero quién sabe, la naturaleza podría estar funcionando en sus propias ecuaciones. 😛

Si necesita hacer una elección al azar, puede lanzar una moneda o lanzar un dado. Si lo hiciera, tendría una ventaja sobre su computadora. Eso es porque el software de la computadora nunca puede generar un número verdaderamente aleatorio .

Eso no es tan importante cuando quieres escuchar tu lista de reproducción favorita en shuffle, pero cuando se trata de áreas importantes como la seguridad y el juego, ¡puede significar todo!

Las computadoras modernas pueden hacer cosas asombrosas. Entonces, ¿por qué no pueden hacer algo tan simple como simular un lanzamiento de dados?

Todo se reduce a la forma en que se programan las computadoras. Las computadoras siguen algoritmos, que son esencialmente solo listas de instrucciones sobre cómo llevar a cabo tareas. Son esclavos de sus instrucciones, por lo que son completamente predecibles. Aún así, los ingenieros son bastante inteligentes y han ideado algunas formas diferentes de hacer que las computadoras generen algo muy cercano a los números aleatorios, incluso si no pueden generar una aleatoriedad verdadera.

Una forma de obtener números aparentemente aleatorios es con un generador de números pseudoaleatorios. Esos algoritmos usan cosas como fórmulas matemáticas o tablas numéricas predeterminadas para crear secuencias numéricas que parecen aleatorias. En estos días, los algoritmos que generan números pseudoaleatorios son tan buenos que tomaría el trabajo de Sherlock determinar que los números no son realmente aleatorios. Aún así, es posible!

Consulte para más:

¿Qué quieres decir con “número verdaderamente aleatorio”?

Aquí te daré un número verdaderamente aleatorio entre 0 y 99 (inclusive):

71

¿Lo adivinaste? Estoy apostando que no. O, en el mejor de los casos, tenía una probabilidad de 1 en 100 de hacerlo. Apuesto a que crees que fue amañado. Que te he engañado de alguna manera. Bueno, ahora piénsalo. ¿Cómo? ¿Cómo hice trampa?

Bueno, por supuesto, si actualiza la página y la lee de nuevo, entonces, de repente, sus probabilidades de adivinar mejorarán al 100%, ¿no?

Y eso, damas y caballeros, es la verdadera definición de “aleatorio”. Es algo para lo que no tenía un modelo para adivinar de manera determinista antes de darse cuenta, y que no se aplica de ninguna manera a cosas que ya sabe.

Solo para que quede claro, si barajas un mazo de cartas normal y eliges el 7 de diamantes, las probabilidades de hacerlo son del 100%. Porque ya sabes cuál es la tarjeta. Es solo 1 de 52 si aún no ha elegido la carta (y su barajado es uniforme).

La aleatoriedad se trata de un fenómeno que sabes que tiene un resultado, pero no sabes lo que es y no puedes discernirlo a través de tu propio poder. No tiene nada que ver con la calidad del generador, o la fuente de entropía o si proviene o no de la radiación de fondo cósmico o qué.

Por ejemplo, solo tengo memorizados los primeros dígitos de pi. Entonces, para mí, si solo digo, comienza a elegir los dígitos de pi después de, digamos, el 50º decimal, entonces esta es una fuente perfecta de números aleatorios entre 0 y 9 inclusive para mí. Porque no tengo idea de cuáles son estos dígitos. No son al azar en el sentido de ser diferentes cada vez, o que nadie pueda predecirlos.

Entonces, la aleatoriedad es una cuestión de perspectiva, no solo una cuestión de carácter entrópico.

Ahora, lo que probablemente quiere decir es un número aleatorio universal . Es decir, una fuente de números aleatorios que nadie puede predecir. Bueno, en ese caso, cualquier fenómeno de física difícil de modelar, tan simple como lanzar una moneda es lo suficientemente bueno. No hay razón para volverse exótico con el muestreo de radiación de fondo cósmico o algo así.

Generar un verdadero número aleatorio es difícil. La mayoría de las computadoras usan una combinación de algoritmos matemáticos y tanta entropía como puedan encontrar. Sin embargo, eso es más difícil de lo que uno podría imaginar.

Algoritmo

Primero, el algoritmo. Las computadoras usan algo llamado generador de números pseudoaleatorios (PRNG). Un PRNG toma un valor inicial y escupe bits o bytes que parecen aleatorios. Las secuencias de bytes de estos algoritmos deben pasar pruebas estadísticas estándar si el generador se considera seguro.

Los algoritmos también tienen períodos extremadamente largos. Es decir, aunque cada PRNG puede comenzar a repetir una secuencia en algún momento (ningún PRNG puede ser verdaderamente aleatorio), debe pasar un tiempo realmente largo (por ejemplo, 10 ^ 60 bytes) antes de que una secuencia repita su salida.

Un punto importante, cualquier PRNG producirá la misma secuencia dada la misma semilla. Esto no es un defecto, es por diseño. Ningún PRNG debe recibir la misma semilla, si se considera seguro.

Lo cual nos lleva al siguiente punto …

Semilla inicial o entropía

Cuando las personas de seguridad piensan en números aleatorios y sus generadores, piensan en términos de entropía. Esto se parece mucho al concepto de entropía en física. Cerca, pero no exactamente lo mismo. En cualquier caso, cuando queremos sembrar un PRNG, queremos bits que sean altamente entrópicos o no adivinables.

Ahora, a primera vista, esto puede parecer una tarea simple. No lo es.

Por ejemplo, algunos elementos que pueden parecer altamente entrópicos pero no lo son (podrían adivinarse o repetirse):

  • Hora actual: adivinable
  • ID del proceso: a menudo es la misma al reiniciar
  • Tiempo de actividad: puede ser adivinable, a veces detectable
  • Ruido ambiental: en una sala de máquinas puede ser constante o sin micrófono externo
  • Cientos de subprocesos paralelos se ejecutan para generar datos, ¡pueden comportarse igual siempre!
  • Temperatura ambiente: puede estar en estado estable
  • Luz ambiental: computadoras a menudo en habitaciones interiores
  • Ondas de radio ambientales: pueden verse abrumadas por los EM cercanos

Entonces, ¿cómo se generan las semillas más seguras?

Un método usa la desintegración radiactiva. Un contador Gieger o un detector similar escucha un isótopo radiactivo que rastrea el tiempo entre las desintegraciones o el recuento de desintegración dentro de un período de tiempo corto. La desintegración atómica en una escala de tiempo corta es verdaderamente aleatoria.

Otro método, y mi favorito personal, es usar una lámpara de lava con una cámara. En esta configuración, una lámpara de lava tiene un montón de líquido de colores burbujeantes flotando hacia arriba y hacia abajo y una cámara externa recoge la imagen y la convierte en un valor digital (a menudo con hash). La variabilidad fundamental del líquido en la lámpara crea la entropía. lavarand [dot] org solía ejecutar un servicio gratuito que suministraba números aleatorios generados por lámparas de lava. Lamentablemente, ya no.

Debo agregar que teóricamente / dev / random proporciona números aleatorios y / dev / srandom proporciona números aleatorios seguros. Sin embargo, ambos son a menudo PRNG y no pura generación de bits entrópicos. Si los valores de estas fuentes son verdaderamente seguros depende de la implementación del hardware.

Resumen

Los generadores de números aleatorios contienen dos partes: un generador inicial inicial entrópico y un generador de números pseudoaleatorios. La semilla se pasa al PRNG que proporciona la secuencia final de bytes de números aleatorios.

Una máquina determinista no puede generar números verdaderamente aleatorios, porque, bueno, eso es lo que significa determinista.

Sin embargo, una computadora tiene acceso a todo tipo de datos no deterministas, como fluctuaciones de potencia aleatorias en el hardware, distancia total recorrida por el mouse, acelerómetros, etc. Eso se puede usar para generar números que en realidad son aleatorios.

En general, no. Tienden a aplicar un algoritmo (variado) complicado a una semilla que se deriva de algo así como el tiempo (a menudo agregando la cantidad de veces que se ha llamado al Generador de números aleatorios), y hay algunos ataques de seguridad basados ​​en tratar de adivinar Los resultados utilizados por algunos algoritmos criptográficos.
El kernel de Linux tiene uno que es más aleatorio que la mayoría, ya que utiliza lo que podría considerarse una entrada verdaderamente aleatoria basada en el movimiento del usuario y ciertos otros eventos externos y basados ​​en hardware; mire en el grupo de entropía si tiene curiosidad sobre esto (en realidad no estoy seguro de cuán verdaderamente aleatorio es).
Si necesita una aleatoriedad real, hay soluciones de hardware disponibles que generan una distribución uniforme pero muy aleatoria al hacer cosas como observar la fluctuación en los niveles de radiación de fondo.

No es un algoritmo, sino un dispositivo físico o un sistema complicado con suficientes fuentes de entropía externas (incluido ruido térmico, pestillos metaestables, actividad de red, etc.). Supongo que por azar quieres decir estadísticamente impredecible . Por alguna razón, muchas personas tienen creencias semirreligiosas sobre la aleatoriedad (Einstein afirmó que Dios no juega a los dados, pero se demostró que estaba equivocado usando experimentos de física cuántica). Parece más apropiado mirar los hechos.

Las CPU modernas incluyen generadores físicos de números aleatorios que pueden ser leídos por software (y no me estoy refiriendo a números pseudoaleatorios aquí).

En sistemas Linux, / dev / random es una buena fuente de números aleatorios, pero puede ser lento cuando no hay suficiente entropía. / dev / mrandom es más rápido, pero puede ser “menos aleatorio”.

También puede comprar generadores comerciales de números aleatorios basados ​​en la física cuántica (tan aleatorio como sea posible), pero para la mayoría de las aplicaciones no son mejores que las instalaciones estándar en su computadora.

Para las aplicaciones numéricas, los números pseudoaleatorios suelen ser suficientes y, por lo general, son más apropiados, ya que desea cierta repetibilidad con fines de depuración (hay algunos trucos interesantes que puede jugar con el software aquí). Es un poco complicado generar números aleatorios consistentes en paralelo, pero hay un gran trabajo reciente de DE Shaw Research (con DEShaw como coautor) sobre esto.

También….
De la Wikipedia:

RdRand es una instrucción para devolver números aleatorios de un generador de números aleatorios de hardware en chip Intel. RdRand está disponible en procesadores Ivy Bridge y forma parte de las arquitecturas de conjuntos de instrucciones Intel 64 e IA-32. El generador de números aleatorios cumple con los estándares de seguridad y criptográficos como NIST SP 800-90A, FIPS 140-2 y ANSI 9.82.

El generador utiliza una fuente de entropía en el procesador, que pasa los bits generados aleatoriamente a un acondicionador de Estándar de cifrado avanzado (AES) (en modo CBC-MAC) para destilar la entropía en números aleatorios no deterministas. La salida del acondicionador siembra un generador determinista de bits aleatorios, que proporciona números aleatorios criptográficamente seguros a las aplicaciones que los solicitan a través de la instrucción RdRandinstruction.

Uno de los estándares en los que se basa, NIST SP800-90 contiene cuatro generadores de números aleatorios. Los generadores de números aleatorios con los nombres CTR_DRBG (utilizado por RdRand), Hash_DRBG y HMAC_DRBG [4] están hechos de primitivas criptográficas no controvertidas utilizadas de manera no controvertida, pero se sabe que el restante, Dual_EC_DRBG, es cleptográfico.

La Wikipedia

Hay dos formas clave de medir la aleatoriedad: autocorrelación y correlación cruzada .

En el corazón de ambos conceptos está el concepto de una secuencia. Un patrón de unos y ceros es un ejemplo de una secuencia.

Para decir que una secuencia es, en sí misma, ‘verdaderamente aleatoria’, primero se requiere que la secuencia tenga infinitos miembros, o si una secuencia es de longitud finita, esa secuencia es miembro de un conjunto infinito de tales secuencias.

El segundo requisito es que todas las “probabilidades condicionales” son exactamente iguales a las “probabilidades incondicionales”; es decir, dado un elemento en una secuencia, la probabilidad de que ocurra ese elemento no depende de la aparición de cualquier otro elemento en la secuencia.

Para juzgar la aleatoriedad verdadera de una secuencia se requiere que la secuencia tenga una longitud infinita y que toda la secuencia esté disponible, lo cual es prácticamente imposible. Por ejemplo, podría darme los primeros mil millones de bits de un generador de números aleatorios, y todos esos bits podrían ser ‘1’, pero eso podría no tener una relación necesaria con el valor de los bits posteriores; es decir, esa secuencia de mil millones de bits podría ser una parte perfectamente legítima de una secuencia verdaderamente aleatoria.

Alternativamente, podría decir, “bueno, el dígito que elegí no es parte de una secuencia. Es solo un número”. Eso lleva a la cuestión de la correlación cruzada . ¿Cómo se correlaciona la selección de ese dígito con otro proceso?

Esa pregunta tiene sus propios problemas. Por ejemplo, ¿los dígitos de pi son realmente aleatorios, en el sentido de que las probabilidades condicionales se comportan como describí anteriormente? Nadie sabe. Puedo crear una fórmula determinista para la síntesis de esos dígitos, pero produciría un número finito de dígitos en un período finito de tiempo. Los dígitos pueden, en realidad, ser verdaderamente aleatorios, pero deterministas, pero de nuevo, nadie lo sabe.

Dicho de otra manera, supongamos que me pide un número entre 1 y 10, y elijo ‘3’, porque ese fue el día del mes en que nací. Claramente, establecí un vínculo determinista entre la respuesta que di y otro número. Pero, ¿qué determinó el día en que nací? ¿Qué podría haberme influido para elegir el día del mes en que nací para responder la pregunta?

¿Qué pasaría si todas esas preguntas pudieran ser rastreadas de manera recursiva hasta eventos o decisiones que no tienen precursores? Tales eventos no pueden ser causados; ¿Eso significa que no son deterministas?

Por supuesto, nada de esto tiene mucho que ver con el tema del “libre albedrío”. Nuestras elecciones probablemente estén influenciadas por nuestras experiencias. Pero sin un modelo determinista para las elecciones hechas por los humanos, no se puede descartar la posibilidad del libre albedrío.

Una máquina de Turing no puede (es decir, computadoras modernas). Son máquinas deterministas y no puede producir resultados no deterministas a partir de una máquina determinista.

Sin embargo, puede conectarlos a un sensor que puede alimentar entradas aleatorias en la máquina. Desde un rodillo de matriz cautivo hasta una lámpara de lava, hay muchos aparatos que puede usar como entradas aleatorias para la máquina, pero la máquina en sí no puede.

Un algoritmo es una lista paso a paso de instrucciones. Si creó un algoritmo donde estaban las instrucciones;

1) Obtenga un número verdaderamente aleatorio de la transmisión en vivo de números verdaderamente aleatorios de la Universidad Nacional de Australia.

Entonces habrías creado un algoritmo que genera números verdaderamente aleatorios.

Si, por otro lado, lo que realmente quisiste preguntar es: “¿Puede una función producir un número verdaderamente aleatorio?” (Esta es la pregunta que la mayoría de las personas responde cuando hablan de números pseudoaleatorios), entonces la respuesta es no.

Una función toma un valor de entrada y produce un único valor de salida. Es posible que no sepamos cómo la función calcula su salida, pero sí sabemos que cada vez que ingresamos la misma entrada obtenemos la misma salida.

Respuesta corta, no.

Los circuitos electrónicos, de los que están hechas las computadoras, son intrínsecamente deterministas. Dada la misma entrada y el mismo estado del sistema, la respuesta siempre será una sola.

Esta es la razón por la cual las personas se han esforzado por encontrar formas de hacer que los generadores de salida pseudoaleatorios sean lo más aleatorios posible.

En algunos casos, esto significa probar matemáticamente que el comportamiento de dicha salida tiene propiedades que son lo más similares posible a un verdadero proceso aleatorio.

En otros, significa elegir una entrada de una fuente aleatoria (con suerte) y procesarla muchas veces para que sea irreconocible. Esto se conoce comúnmente como una semilla , y podría ser cualquier cosa, desde el tiempo actual en milisegundos hasta una combinación compleja de entrada del usuario (como el movimiento del mouse) y los eventos del sistema.

De acuerdo con Justin Rising: puede usar la Suite Dierharder presente aquí: Página de herramientas generales de Robert G. Brown.

Puede encontrar esta otra herramienta, ent , de ayuda, disponible aquí: Programa de prueba de secuencia de números pseudoaleatorios

Dado que la pregunta no menciona específicamente que está buscando herramientas, aquí hay alguna teoría si está interesado: Cómo probar un generador de números aleatorios

Dada cualquier secuencia de números (finita o infinita), las correlaciones entre subsecuencias nunca son exactamente iguales a las de una “secuencia aleatoria verdadera”. En ese sentido, ninguna secuencia pasará todos los criterios de aleatoriedad.

Por otro lado, si tiene una variable aleatoria X ~ U (0,1), con la distribución uniforme en [0,1 [(0 inclusive, 1 exclusivo), entonces para cualquier distribución aleatoria F, puede calcular Y = [matemática] F ^ {inv} (X) [/ matemática], de modo que Y se distribuye de acuerdo con F. Si X fue “verdaderamente aleatorio”, entonces también lo es Y.

En este contexto, considere el siguiente artículo https://www.maa.org/sites/defaul …, que contiene muchas dificultades en el camino para definir la aleatoriedad. En la sección 3, Aleatoriedad como estocástico, los problemas de definición de “colectivos” muestran que incluso si todas las subsecuencias finitas tienen el comportamiento correcto, la secuencia total puede no ser aleatoria en términos de todas las subsecuencias contables .

No.

La generación de pseudoaleatoriedad (el único tipo posible de ‘aleatoriedad’ generada por computadora) siempre es reversible en el sentido de que puede encontrar cuál era el programa de computadora que generaba la salida pseudoaleatoria, y así reproducirla. Algo que puedes reproducir a voluntad no es aleatorio. Eso ni siquiera significa que encontrará la condición inicial correspondiente (es decir, la versión descifrada) que conduce a la salida (por ejemplo, un mensaje cifrado), ya que el generador pseudoaleatorio puede no ser una función uno a uno, o puede ser imposible en la práctica debido a limitaciones de tiempo (por ejemplo, las llamadas funciones unidireccionales, por ejemplo, basadas en la dificultad de la factorización prima).

Por lo tanto, la pseudoaleatoriedad es solo otro nombre de no aleatoriedad (es decir, determinismo), pero es el tipo de no aleatoriedad que parece ser aleatorio en la superficie, por lo tanto, es aleatoriedad estadística (que es muy diferente de la aleatoriedad verdadera, por ejemplo, aleatoriedad algorítmica no controlable , es decir, el tipo de aleatoriedad que es imposible de generar por medios mecánicos finitos).

Otra pregunta es si existe una aleatoriedad verdadera, la mecánica clásica dice que no, porque todo debe tener una causa. Solo los eventos no causados ​​pueden ser aleatorios y esos procesos no existen en la mecánica clásica. Incluso suponiendo que las fluctuaciones cuánticas pueden ser verdaderamente aleatorias, no está claro cómo se pueden propagar a la realidad de grano grueso en la que vivimos. Y mucho menos si la aleatoriedad cuántica es realmente aleatoria algorítmica, ya que solo es aleatoria bajo algunas interpretaciones de la mecánica cuántica, pero no es realmente necesaria en la teoría (la matemática se trata solo de probabilidades, no de requerir una aleatoriedad incontestable).

Solo si tiene acceso a un generador de números aleatorios de hardware (que tienen muchas CPU modernas), o a datos generados aleatoriamente de su entorno, por ejemplo, movimientos del mouse, clics del teclado, entrada de micrófono, tiempo de llegada de paquetes de red o accesos a disco, etc. Sin Como fuente de entropía , las computadoras son deterministas, en el sentido de que el mismo programa ejecutado en los mismos datos producirá la misma salida.