edición general
189 meneos
2790 clics
El azar es imposible (al menos en los ordenadores)  - El drama de los números aleatorios (Derivando)

El azar es imposible (al menos en los ordenadores) - El drama de los números aleatorios (Derivando)  

Es muy importante poder generar números aleatorios en un ordenador, lo que ocurre es que hay un problema tremendo: ¡Resulta que es imposible! Al menos sin ayuda... ¡Vamos a verlo en este vídeo!

| etiquetas: derivando , random , números aleatorios
«12
  1. Tanto como un drama. :palm:
  2. Explicativo vídeo, no conocía la técnica LSFR.
  3. tul #4 tul *
    imprescindible esta tira de dilbert :-)  media
  4. una viñeta que viene al caso  media
  5. Es que hacer que un algoritmo, es decir un proceso que a partir de unos datos de entrada y siguiendo unos pasos concretos genere unos datos de salida genere salidas completamente aleatorias es muy muy complicado.

    Por eso se recurre a "generadores de azar", que introducen en la entrada valores "aleatorios", como puede ser el movimiento del ratón en la pantalla, la velocidad de tecleo .. etc
  6. No voy a ser yo menos.  media
  7. Aunque prefiero esta.  media
  8. No sé por qué, me ha venido a la mente esta tira  media
  9. #8 Realmente la función es correcta.
  10. Tenéis que ver esta viñeta.  media
  11. Parece que hay unos cuantos que han seleccionado al azar una tira de Dilbert...
  12. Flipante esta tira sobre el tema.  media
  13. Necesitas un evento aleatorio iniciador.

    #6 Los datos de entrada si pueden ser aleatorios. Por ejemplo, la velocidad del viento en un punto determinado en el instante en que se inicia el cálculo.
  14. Venga, una imagen aleatoria  media
  15. Pues qué queréis que os diga, a mí el "Randomize Timer" me ha servido desde hace 40 años.
  16. #14 Los ordenadores no suelen tener ningún sensor de viento, a su vez pueden estar en un entorno de clima controlado y el viento allí no tiene nada de aleatorio. Lo que ha citado el otro usuario sí son elementos generalmente disponibles en un ordenador de sobremesa, que no así en un servidor.

    Lo que se suele hacer también es guardar en un fichero una semilla que se ha generado antes del anterior reinicio, de forma que si es un servidor que tiene pocos elementos de entrada aleatoria no se repita cada vez que se inicia. Parte de la semilla anterior, la va usando y la va guardando periódicamente para cuando necesite usarla más tarde, tras otro reinicio.
  17. #14 los movimientos de ratón o leer de la tarjeta de red son buenas fuentes de entropía al alcance de la CPU
  18. #15 Seguro que es aleatoria?
  19. #1 es un drama en el sentido que algunos postulados matemáticos se basan en el concepto abstracto de aleatoriedad

    Simplemente separa las matemáticas de la computación

    Otro drama es la coma flotante vs el cuerpo se números reales
  20. #17 En un servidor puede utilizarse información de la actividad de red, por ejemplo. También existen chips especializados que utilizan varias fuentes que (estoy imaginando) podrían ir desde la temperatura a la presión atmosférica o el tiempo entre solicitudes de red...
  21. #22 Y puedes ponerle un generador de números aleatorios cuánticos1.

    Pero si eres quien hace el sistema operativo y no tienes control de los dispositivos que te pondrá el usuario en un servidor como bien dices la tarjeta de red es de las pocas fuentes de posible aleatoriedad con las que puedes contar.

    Pero la tarjeta de red puede iniciarse demasiado tarde para lo que necesitas la aleatoriedad, desconozco si hay protocolos de red cifrados que requieran la clave antes de la conectividad.

    1 www.idquantique.com/random-number-generation/products/quantis-random-n
  22. Y cabe la posibilidad de que el azar no exista? Es decir, que nuestro desconocimiento no llegue a controlar todas las variables y por eso le llamemos azar, pero quizás no exista tal aleatoriedad.
  23. #21 queda claro que la aleatoriedad tampoco funciona con humanos xD
    bonus: xkcd.com/221/
    doubleblonus xkcd.com/1210/
  24. #19 Ese es el problema de la aleatoriedad, que nunca puedes estar seguro.
  25. El azar es imposible en cualquier aspecto de la vida, lo más cercano a ello es la cuántica.
  26. El azar es imposible (al menos en los ordenadores)

    Humm....
    www.idquantique.com/random-number-generation/overview/
    cordis.europa.eu/project/id/820405
  27. #24 Largo y tendido se ha escrito sobre el tema, de momento hasta donde sabemos, el universo se fundamenta en la teoría cuántica de campos, y la cuántica es esencialmente aleatoria.
  28. #21 Yo creo que buscaron una imagen aleatoria

    No había visto más abajo... hay muchos más con lo mismo y ya otro dijo lo de la imagen aleatorea :c
  29. #8 Si... los ingenieros Microsoft de Sony usaron ese método en la PS3
  30. #24 Sostienes que el destino está ya escrito y que carecemos de cualquier tipo de libertad ?

    Si te pego un tiro no soy responsable porque ya estaba destinado de forma ineludible a hacerlo ? :troll:
  31. Pero si vale con coger muestras de resistencias que varien con la temperatura u otras y lo hagan con mucha sensibilidad, cosas por naturaleza caoticas... pues vaya.
  32. Camiseta de Exodus…No sabía que el señor Sáenz es un jebi sin greñas. Si ya me caía bien, ahora tiene todo mi respeto y admiración.
  33. Con la tecnología blockchain se han conseguido soluciones bastante chulas para este tema como Randao.
  34. Segun tengo entendido con una semilla incial que consigas que sea aleatoria con dos números primos grandes puedes hacer una función que te asegura que creará una sucesión de números infinitos sin bucles, sin repeticiones y que con el operador módulo puedes llevar a cualquier rango.

    Y para la semilla aleatoria inicial si no es para algo de extremada seguridad puedes pillar el tiempo en milisengundos del reloj del sistema o si te pones mas exquisito tener algún aparato que haga mediciones en un medio aleatorio, por ejemplo ciertas antenas que miden cambios en el aire
    generan conjuntos de números que pueden considerarse aleatorios.
  35. Yo usaba el generador de títulos de películas de Steven Seagal como semilla de un mt_rand (en PHP).

    Nunca nadie se quejó de que el resultado no fuera suficientemente aleatorio (entre otras cosas porque una vez capturado el título de la película lo usaba, además, para titular el informe asociado, así que la gente un día leía "Desafío Frontal", al día siguiente "Fortaleza Infernal", luego "Muerte Definitiva 2", "Sangre Sangrienta", "Justicia al amanecer", "Asesinato sin control" y cosas así).
  36. #25 221 es mi segundo xkcd favorito, y uno que por la naturaleza de mi trabajo, me he visto enlazar más de una vez (el de estándares de lleva la posición número 1: xkcd.com/927/)
  37. #32 no hace falta que recurras a la cuántica

    Cuando he dicho computación he querido decir computación digital, no lo he especificado, mi error

    De todas formas con el cuerpo de los reales sigue siendo un dilema
  38. #14 eso suena como algo bastante peligroso. Si se que tu máquina usa como semilla para su PRNG un sensor de viento, ademas de todos los posibles ataques MITM y ataques al sensor, solo el hecho de conocer la precisión y rango de valores del sensor me va a dar unos cuantos bits de información. Y eso sin saber el día el sensor específico que está siendo utilizado.

    Una clave de criptografía moderna tendrá aproximadamente 256 bits de complejidad (las claves RSA tienen mucha mayor longitud, pero en realidad su complejidad real es menos). Si se que el dispositivo tiene una precisión de 64 bits (o peor, 32) eso está reduciendo la cantidad de claves posibles a ese espacio de 2^64, algo que puede romperse fácilmente
  39. #33 Yo creo que existen simultáneamente todas las realidades
  40. #43 Claro. Pero la cuestión es : ¿ Hay más de una ?
  41. Revelaron las claves criptográficas de la PS3 gracias a un fallo igualito:
    www.engadget.com/2010-12-29-hackers-obtain-ps3-private-cryptography-ke
  42. Pues a mi no me parece tan dificil, basta con usar los milisegundos de la hora, y si lo quieres mas largo unir mas milisegundos. Es totalmente aleatorio.
  43. #44 Están todas, en forma de árbol, aunque las ramas son más densas cuanto más probables. En una realidad le pegas el tiro convencido de que es el destino, en otra le pegas el tiro pensando en que fue tu decisión.
  44. #47 Soy infinitas personas en una sola. Como la santísima trinidad pero a lo bestia... :-D xD

    ¿ Existirán realidades con leyes físicas distintas entonces ?
  45. #48 Buff... Y más aún... En otro plano filosófico todos somos la misma "persona"

    Pero tú última pregunta es más complicada. Aunque yo creo que sí. Así que imagínate el procesador cuántico que usa el universo. ¡Qué potencia!
  46. Chainlink VRF
  47. #36 Chainlink VRF
  48. Solucionado con chips que generan ruido aleatorio como seed de los algoritmos pseudoaleatorios.

    No es nada extraordinario, mi router lleva uno de estos.
  49. #49 Aunque yo creo que sí.

    Entonces existirán todas las realidades con todas las leyes físicas imaginables.....

    incluida una realidad en la que las leyes físicas establecen que la realidad es única....xD xD xD xD
  50. #46 La entropía que genera eso es muy poca cosa. Sirva como ejemplo las colisiones en el kad del eMule.
  51. #46 Ese valor va a depender del scheduler de tu OS. Para un apaño puede valer, pero la entropía que te de eso debe ser muy pobre.
  52. "Una sucesión es aleatoria si es igual o más corta que cualquier descripción de ella"
    Si tiras los dados 10 veces y te sale 1,2,1,2,1,2,1,2 seria aleatorio y podrias hacer una descripcion mas corta. No?
  53. #27 La mecánica cuántica funciona con probabilidades que (se asume que) no dependen de ningún mecanismo oculto inobservable, y son por lo tanto números aleatorios reales. Esto se puede usar en la práctica.
  54. Es un tema que salió de pasada en The Big Bang Theory y resulta que era cierto. Otro tanto para la serie.

    #3 Creo que hay una viñeta que habla del tema...
  55. #49 Lo cierto es que existe un solo electrón, pero lo vemos en muchos sitios a la vez.
  56. #42 Para estos trastos se desprecia la parte significativa de la medida y te quedas solo con los últimos decimales, que no es posible predecir con el pronóstico metereológico.

    Vas acumulando medidas. Le metes una serie de hashes al conjunto y eso es el input para el algoritmo pseudoaleatorio
  57. #18 Como en TrueCrypt, sí. Es mucho más que suficiente.
  58. #25 Los humanos somos completamente incapaces de generar números aleatorios. Es un desastre al primer intento. Para eso que hay tablas de números aleatorios.
  59. #1 El aleatorio del Spotify es un drama que sufro constantemente.
  60. Y luego está usar una pared llena de lámparas de lava y una cámara para generar la semilla en función de los movimientos de la lava, con la aleatoriedad añadida de la gente que pase por delante de esa pared...
  61. #56 esa sucesión es "suma uno y resta uno"... así que no es aleatoria. Aunque según la tira de Dilbert que está más arriba....<

    es decir, puedes conseguir por métodos aleatorios una sucesión no aleatoria, ese es el problema. Estadísticamente es muy poco probable, muy difícil, pero a los ordenadores si no haces eso que indica el vídeo se les da condenadamente bien caer en ese problema. O en generar una aleatoria y luego otra aleatoria que sea una función de la primera.
  62. #63 No estás solo, llevo varias semanas escuchando las mismas canciones de una lista de 1000. En mi coche es aún peor, cada hora o así te vuelve a poner las mismas canciones
  63. #60 así si. Aún así, no me fiaría de un sensor externo
  64. Una tarjeta con un detector de rayos cósmicos vendría muy bien como generador de entropía.
  65. #53 Es el único universo que no es aceptado en el club. Por presuntuoso
  66. #66 hay un truco: ordenar la lista por nombre de canción y no por "añadido recientemente" y además metiéndole el aleatorio.
  67. #33 Eso no lo salvas si el tiro lo has pegado por un impulso aleatorio. Tanto si el universo es determinista como si es aleatorio no puede existir el libre albedrio.
  68. #70 Gracias. Probaré el ordenar por nombre, suelo tenerlo ordenador por fecha. El aleatorio si lo pongo.
  69. Una cita del año la pera que me salía en el furtunes del Unix:

    The generation of random numbers is too important to be left to chance.
    —Robert R. Coveyou
  70. Lanzar múltiples hilos haciendo operaciones no conmiutativas una y otra vez sobre las mismas posiciones de memoria y dejar que las race conditions hagan su trabajo.

    Si se ejecuta desde absolutamente las mismas condiciones iniciales supuestamente daría el mismo resultado, pero esas condiciones iniciales no se limitan al programa sino que alcanzan a todo lo que esté ejecutando el dispositivo incluido el más bajo nivel.
  71. #33 lo que dice #29. Puedes calcular solo probabilidades de que algo suceda o no hasta que se observa. La cosa es que al observar algo es el presente.
    No se si eso significa que el destino está escrito pero no hay forma de "leerlo" hasta que sucede o que se escribe según llega. De cualquier forma, lo más que vas a poder ver en el futuro son probabilidades.
  72. #39 Perdón por el negativo (móvil + dedazo).
  73. ¿Los decimales de pi?, aunque según Carl Sagan en Contact no, pues esconden un mensaje
  74. #52 las CPU de intel y amd mas o menos modernas también lo hacen y tienen instrucciones especificas. Y los VIA de hace montones de años ya tenían soporte en hardware para generar números aleatorios.
  75. #8 jaaaaajaa ostia, gracias por las risas :-D :-D
  76. Con Windows Milenium si que había una verdadera aleatoriedad, te podía surgir cualquier error sin aparecer relación con el anterior
  77. #17
    "Los ordenadores no suelen tener ningún sensor de viento"
    Muchos ordenadores suelen tener micrófono. Casi todos los de uso personal: teléfonos, tablets, portátiles, sobremesa...
    Lo que capta un micrófono son valores de presión del aire... No exactamente la "velocidad" del viento, aunque se parece un poco. Por lo que leí, a efectos de aleatoriedad suele usarse el último bit. Si un micrófono te da valores de presión del aire que se traducen en valores de potencial eléctrico, que al pasar por un conversor de analógico a digital te da, por ejemplo, 16 bits por muestra (calidad CDA) entonces tomas solamente el último bit, el menos significativo. Y mínimo sueles tomar 8000 muestras por segundo, es decir, frecuencia de muestreo de 8 kHz. Eso son 8000 bits bastante aleatorios cada segundo. En calidad CDA serían 22 kHz, es decir, 22 000 muestras por segundo. Aparte de la aleatoriedad de las fuentes de sonido (que digas algo o produzcas algún sonido), todo canal de comunicación está sujeto a un "ruido", una perturbación aleatoria, y a eso se suma también ruido eléctrico entre el micrófono y el conversor a digital.

    En cuanto a los otros elementos, hay muchos "ordenadores" que no los tienen. Por ejemplo, el "ratón" hay muchos dispositivos que no tienen exactamente eso, tendrían una pantalla táctil, por ejemplo.

    En lo referente a la semilla, hay varios problemas. Un problema es repetición periódica. Es decir, quizá en un momento no sepas cuál es la semilla, pero si sabes el algoritmo y ves una secuencia, entonces al cabo de un tiempo sabrás con exactitud cuál es el siguiente número que aparecerá. No importa que en otro reinicio tengas otra semilla... sabrás con exactitud cuál será esa otra semilla y los números derivados de ella, etc. No necesitas ni acceder al sistema de ficheros donde se guarda la semilla (ese podría ser otro problema). No sé si será verdad, pero me suena haber oído o leído que algunos miraban las máquinas tragaperras para ver las combinaciones que salían y sabiendo unas cuantas podían saber cuándo saldría el premio. Daba igual que la semilla fuese diferente cada vez que se apagaba y encendía el máquina. Tampoco importaba que la secuencia completa, si era de 32 bits, tuviese 1000 millones de números diferentes... bastaría saber unos 32 números seguidos para saber en cuál número de 32 bits estás, y con eso ya sabes los que siguen.


    Actualmente hay chips de microprocesadores que incluyen un aleatorizador cuántico... mucho mejor que micrófono, teclados o ratón, ya que está en el propio corazón del aparato, un elemento muy pequeño y difícilmente accesible, difícilmente manipulable. Atención: no confundir con computadores cuánticos, es simplemente un microprocesador normal unido a un pequeño elemento que da números aleatorios basado en mecánica cuántica.
    Por supuesto, en estos casos quizá se podría atacar modificando el programa, que no tome el número verdaderamente aleatorio de ahí sino otro número no aleatorio que sepas cuál es.
  78. 10 RANDOMIZE TIME
  79. Para la semilla se pueden usar sensores externos (por ejemplo de temperatura) y usar algunos de los decimales, siempre y cuando los rangos sean precisos.
  80. #75 He aquí el punto de vista confrontado a #43 (y que yo comparto).

    Desde ese punto de vista ni siquiera tiene sentido plantearse si "el destino está escrito", porque simplemente el futuro no existe. Hay movimiento y funciones de onda colapsando. Y ya.

    El tiempo esencialmente es una construcción humana.
  81. #6 joer qué bien explicado, lo he pillado a la.primera y eso que soy más bien de letras.
  82. #71 Si el universo es determinista no puedes pegarlo por "un impulso aleatorio", o está predeterminado y por lo tanto pasa, o no lo está y no pasa.
  83. #77 los decimales de pi parecen aleatorios, el problema es que siempre son los mismos. Calcular una cantidad concreta de decimales de pi también lleva su tiempo
  84. #86 Si el universo es determinista pegas el tiro por estar predeterminado. Si es aleatorio, lo pegas por serlo. En cualquier caso no hay libre albedrio.
  85. #88 Si es aleatorio, lo pegas por serlo.
    O no,
    No olvides que soy gallego.
  86. #24 bienvenido a la teoría del universo determinista.
  87. #28 pero eso no es aleatoriedad en el ordenador, es un ordenador leyendo un sistema aleatorio.
  88. Se tenía que decir y se dijo.  media
  89. #91 Si... pero a efectos prácticos funciona.
  90. #31 Por fin alguien sabio :-)
  91. #15 Me has matado xD
  92. #54 Yo también había pensado en usar los milisegundos que algún proceso o estado, así que me interesa lo de la entropía de la aleatoriedad. Pero buscando en google me ha reenviado a tu propio comentario! ¿Podrías explicar un poco el tema para los que no sabemos exactamente el tema de la entropía para los milisegundos?
  93. #94 También con criptografía

    Pero yo me refiero a usar computación digital para matemáticas.

    Mismamente el teorema del límite central es un teorema matemático que supone aleatoriedad total. Así que si quieres hacer simulaciones necesitas un generador aleatorio si quieres tener resultados que estén con el teorema.

    Con los reales pasa lo mismo. El límite te lo pone la mantisa.
  94. #97 Lo que necesitas entender es el concepto de entropía

    en.wikipedia.org/wiki/Entropy_(information_theory)
  95. #73 Es genial la cita
«12
comentarios cerrados

menéame