¿Qué es realmente la aleatoriedad?


23

Soy estudiante de informática y actualmente estoy inscrito en el curso de Simulación y modelado de sistemas. Implica lidiar con los sistemas cotidianos que nos rodean y simularlos en diferentes escenarios mediante la generación de números aleatorios en diferentes curvas de distribución, como IID, Gauss, etc., por ejemplo. He estado trabajando en el proyecto Boids y una pregunta me llamó la atención: ¿qué es realmente "aleatorio"? Quiero decir, por ejemplo, cada número aleatorio que generamos, incluso en nuestros lenguajes de programación como a través del Math.random()método en Java, se genera esencialmente siguiendo un "algoritmo".

¿Cómo sabemos realmente que una secuencia de números que producimos es, de hecho, aleatoria y nos ayudaría a simular un modelo determinado con la mayor precisión posible?



Respuestas:


18

La respuesta corta es que nadie sabe qué es la aleatoriedad real, o si existe tal cosa. Si desea cuantificar o medir la aleatoriedad de un objeto discreto, normalmente recurrirá a la complejidad de Kolmogorov . Antes de la complejidad de Kolmogorov, no teníamos forma de cuantificar la aleatoriedad de decir una secuencia de números sin considerar el proceso que la generó.

Aquí hay un ejemplo intuitivo que realmente estaba molestando a las personas en el pasado. Considere una secuencia de lanzamientos de monedas. El resultado de un lanzamiento es cara ( ) o cruz ( ). Digamos que hacemos dos experimentos, donde lanzamos una moneda 10 veces. El primer experimento nos da . El segundo experimento nos da . Después de ver el resultado, es posible que sientas la tentación de afirmar que hubo algún problema con la moneda en , o al menos por alguna extraña razón, lo que obtuviste no es aleatorio. Pero si supone que tanto como son tan probables (la moneda es justa), la probabilidad de obtenerT E 1 H , H , H , H , H , H , H , H , H , H E 2 T , T , H , T , H , T , T , H , T , H E 1 H T E 1 E 2 ( 1 / 2 ) 10 E 2 EHTmi1H,H,H,H,H,H,H,H,H,Hmi2T,T,H,T,H,T,T,H,T,Hmi1HTmi1 o es igual a . De hecho, ¡obtener cualquier secuencia específica es tan probable como cualquiera! Aún así, siente al azar, y no.mi2(1/ /2)10mi2 mi1

En general, dado que la complejidad de Kolmogorov no es computable, no se puede calcular cuán aleatoria es una secuencia de números, sin importar qué tipo de proceso "totalmente aleatorio" generado la genere.


Para secuencias infinitas, tenemos muchas más herramientas para definir la aleatoriedad, como la normalidad.
Denis

1
@dkuper Tenga en cuenta que la secuencia infinita cuyos segmentos iniciales son todos aleatorios según la definición de complejidad de Kolmogorov será normal, pero ser normal no es suficiente para ser lo que podría considerarse verdaderamente aleatorio. Por ejemplo, hay números normales cuyos segmentos iniciales tienen más de 1 que de 0.
Quinn Culver

@Quinn Culver Sí, estoy de acuerdo, la normalidad fue solo un ejemplo de una herramienta adicional que tenemos (entre otras) para secuencias infinitas. La complejidad de Kolmogorov y otras aún son útiles.
Denis

8

En el caso de Java (o lenguajes similares), conocemos el algoritmo utilizado para crear los números aleatorios. Si comienza con una sola semilla, los números no son aleatorios en absoluto, es decir, si conocemos en una secuencia a 0 , ... , a n , conocemos a i + 1 , o expresamos como probabilidad condicional: k , l , i : P ( a i + 1 = k a i = l ) { 0 ,unayouna0 0,...,unanorteunayo+1

k,l,yo:PAGS(unayo+1=kunayo=l){0 0,1}

Sin embargo, esas series pueden cumplir propiedades (ver, por ejemplo, WP: Autocorrelación ) que cumplen los números aleatorios y estas propiedades a menudo son suficientes para realizar tareas, donde nos gustaría usar números aleatorios "reales" (por ejemplo, generados por algún proceso físico), pero podemos ' t esfuerzo ellos.


3

Es imposible saber con certeza si una secuencia dada es aleatoria o no. Sin embargo, puede observar las características (o parámetros) de una secuencia y calcular la probabilidad de dicha secuencia dada la distribución de interés.

(μ=0 0,σ=1)1

Puede agregar momentos adicionales de la distribución (como sesgo) de interés para una validación adicional. Para los números IID, también podría intentar entrenar un algoritmo de aprendizaje automático para predecir los próximos elementos de la secuencia y luego probar la hipótesis nula de que el historial mejora el rendimiento. Sin embargo, ninguno de estos métodos puede probar que una secuencia es verdaderamente aleatoria y, en el mejor de los casos, puede reconocer cuándo las secuencias NO son aleatorias (hasta cierto punto de certeza).


3

La teoría moderna de la respuesta informática es "una fuente aleatoria es una fuente que parece aleatoria a su clase favorita de algoritmos". Esta es una perspectiva utilitaria: si una fuente de aleatoriedad se parece a la verdadera aleatoriedad para todos los algoritmos que le interesan, entonces nada más importa. Puede analizar sus algoritmos como si recibieran lanzamientos de monedas verdaderamente aleatorios, y su análisis le dará las respuestas correctas.

UNAUNA

  • todas las máquinas de Turing que siempre se detienen
  • todas las familias de circuitos de tamaño polinómico
  • todas las máquinas de Turing de tiempo polinómico
  • todas las máquinas de Turing con espacio de registro

UNA(Xnorte)Xnorte{0 0,1}norteϵUNAUNAUNA

El |Pr[UNA(Xnorte)=1]-Pr[UNA(Unorte)=1]El |ϵ,
Unorte{0 0,1}norte

Esta idea está detrás de cualquier noción formal moderna de pseudoaleatoriedad.


2

Aquí hay dos centavos más.

Una forma de pensar en algoritmos aleatorios es imaginar una caja que toma algo de entrada, hace cosas misteriosas a esa entrada y produce una salida ("impredecible").

Pero en cambio, podría ser útil pensar en ellos como algoritmos deterministas que toman dos entradas: la entrada "verdadera" y algunas entradas "aleatorias" que obtenemos de funciones como Math.Random().

[0 0,1]norteIniciar sesiónnorte

[0 0,1]norteIniciar sesiónnorte

Como Jonathan y Frafl mencionan, hay formas de verificar si una fuente aleatoria se comporta "aleatoriamente". Pero todo lo que harán es influir en lo que usted cree sobre la información futura que proviene de esta fuente aleatoria. Si cree que cada bit es igualmente probable que sea cero o uno, independientemente de los bits anteriores, entonces, según su conocimiento y sus creencias, esa fuente es aleatoria de manera uniforme e independiente y, por lo tanto, según su conocimiento y creencias, correrá rápido o será correcto, etc. Esa es mi opinión filosófica, de todos modos.


-2

No podemos generar números verdaderamente aleatorios. Existen diferentes métodos para generar números pseudoaleatorios utilizando una ecuación específica y un valor de semilla particular. Entonces, la secuencia aleatoria de números depende del valor de la semilla. Una vez que conocemos el valor semilla, podemos predecir cuál será la secuencia. Aparte de esto, hay otros métodos para generar números aleatorios. Las personas ahora están utilizando algunos métodos para generar números aleatorios verdaderos, como el tiempo de movimiento de la cabeza del disco y otros métodos físicos que se pueden incorporar en una computadora. Consulte: http://en.wikipedia.org/wiki/Random_number_generation#Generation_methods



-3

por el método dado como dijiste
Math.random () en Java
Randomize; Aleatorio (n); en Delphi

puede implementar su propia estructura y lógica para generar números aleatorios,
donde dicho "algoritmo" puede funcionar según sus especificaciones dadas para obtener mejores resultados aleatorios.
y construir sobre eso las lógicas.

Gracias.


2
¿Cómo responde esto a la pregunta "cómo se sabe que una secuencia es aleatoria"?
Juho

como ya dije. solo ... donde "aleatorio" puede ser visto como trampa, pero no afecta su efecto aleatorio. Entonces hazlo orgulloso y construye tu lógica. Simple.
Apodo

-4

otras respuestas son buenas, aquí hay algunos otros ángulos en esta pregunta muy importante / involuntariamente profunda. Los científicos informáticos han estado estudiando la aleatoriedad durante décadas y es probable que continúen estudiándola. tiene muchas conexiones profundas y las principales preguntas abiertas que quedan en todo el campo. Aquí están algunas sugerencias.

  • La "aleatoriedad verdadera / real" ocurre con procesos físicos de bajo nivel y "ruido" como en diodos zener, mecánica cuántica, etc., que pueden aprovecharse en RNG basados ​​en hardware

  • otros números generados en el ámbito de la computadora es lo que se conoce como "pseudoaleatorio", que se simula y nunca puede coincidir con "aleatoriedad verdadera". estos son los llamados PRNG

  • existe un sentido importante de "dureza criptográfica de los generadores de números aleatorios" que en cierto sentido mide su "calidad" o "seguridad", por ejemplo, ver PRNG criptográficamente seguro . básicamente un generador "débil" no tiene tanta complejidad computacional como un generador "duro" y uno "débil" es más fácil de romper.

  • O(norte)O(norte2)=?La prueba NP debe tener una cierta "complejidad"; de lo contrario, la misma técnica de análisis podría usarse para romper los PRNG, y además, de manera algo sorprendente, la mayoría o quizás todas las separaciones / técnicas de clase de complejidad conocidas en esa fecha (o posiblemente incluso después ) No tiene suficiente complejidad.

  • Un tema de investigación importante en TCS son los algoritmos aleatorios y desrandomizados . La idea es, aproximadamente, estudiar cuánto se altera el algoritmo al reemplazar la "aleatoriedad verdadera" con un PRNG y existen varios teoremas profundos sobre el tema. Aquí hay una pregunta cstheory.se de alto rango que da una idea de la investigación en esta área: algoritmos aleatorios eficientes y simples donde el determinismo es difícil

  • otro tema clave relacionado en TCS es la entropía de la información , originalmente introducida en física hace mucho tiempo, que estudia un concepto estrechamente relacionado de "desorden de la información" y, al igual que otros conceptos importantes en (T) CS, parece ser una de las ideas clave que atraviesa El límite entre el análisis teórico y aplicado, incluso algunas de las fórmulas son las mismas .

  • Una vez más, para dar fe del estado de la investigación activa, hay otras preguntas de alto rango en cstheory.se que se relacionan con esta pregunta. Aquí hay uno cercano, casi el mismo: es un generador de números verdaderamente aleatorio computable Turing


Y no solo los informáticos están interesados ​​en la "aleatoriedad". Es probablemente una pregunta eterna, considerada también desde perspectivas religiosas y filosóficas.
Juho

De acuerdo, también en física es un concepto clave en la invención de QM y el debate de Bohr-Einstein , Bells thm , y todavía motiva "teorías de variables ocultas" nuevamente un área activa de investigación. así que, como usted dice, tal vez nadie sepa qué es, pero muchos todavía están trabajando para encontrar una respuesta más definitiva mientras hablamos.
vzn

más sobre la relevancia de la aleatoriedad para el ángulo P vs NP, se muestra en la satisfacción y el "punto de transición" de la camarilla, por ejemplo, como en este artículo La complejidad monótona de k-Clique en gráficos aleatorios por Rossman
vzn

re romper los generadores de números aleatorios ven ataque RNG , wikipedia
vzn

una visión general sobre la aleatoriedad en CS por wigderson RANDOMNESS AND PSEUDORANDOMNESS
vzn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.