Hace 2 años | Por ccguy a youtube.com
Publicado hace 2 años por ccguy a youtube.com

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!

Comentarios

D
r

#3 #4 #5 lol

tul

#21 queda claro que la aleatoriedad tampoco funciona con humanos lol
bonus: https://xkcd.com/221/
doubleblonus https://xkcd.com/1210/

R

#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: https://xkcd.com/927/)

Gilbebo

#39 Perdón por el negativo (móvil + dedazo).

y

#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.

j

#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

D

#3 GENIAL

D

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...

t

Venga, una imagen aleatoria

#15 Seguro que es aleatoria?

S

#15 Me has matado lol

habitante

Tenéis que ver esta viñeta.

abnog

Aunque prefiero esta.

D

#8 Realmente la función es correcta.

anv

#8 Si... los ingenieros Microsoft de Sony usaron ese método en la PS3

S

#31 Por fin alguien sabio

o

#8 jaaaaajaa ostia, gracias por las risas

abnog

No voy a ser yo menos.

traviesvs_maximvs

una viñeta que viene al caso

Pablosky

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í).

y

Pues qué queréis que os diga, a mí el "Randomize Timer" me ha servido desde hace 40 años.

D

Explicativo vídeo, no conocía la técnica LSFR.

Jakeukalane

Parece que hay unos cuantos que han seleccionado al azar una tira de Dilbert...

Acido

#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.

astronauta_rimador

#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.

p

#70 Gracias. Probaré el ordenar por nombre, suelo tenerlo ordenador por fecha. El aleatorio si lo pongo.

luiggi

#33 Yo creo que existen simultáneamente todas las realidades

c

#43 Claro. Pero la cuestión es : ¿ Hay más de una ?

luiggi

#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.

c

#47 Soy infinitas personas en una sola. Como la santísima trinidad pero a lo bestia... lol

¿ Existirán realidades con leyes físicas distintas entonces ?

luiggi

#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!

c

#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....lol lol lol lol

luiggi

#53 Es el único universo que no es aceptado en el club. Por presuntuoso

y

#49 Lo cierto es que existe un solo electrón, pero lo vemos en muchos sitios a la vez.

c

#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.

D

Se tenía que decir y se dijo.

Jesulisto

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

daphoene

#73 Es genial la cita

c

#88 Si es aleatorio, lo pegas por serlo.
O no,
No olvides que soy gallego.

c

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

Priorat

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.

sorrillo

#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.

c

#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...

sorrillo

#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 https://www.idquantique.com/random-number-generation/products/quantis-random-number-generator/

eixerit_yo

#14 los movimientos de ratón o leer de la tarjeta de red son buenas fuentes de entropía al alcance de la CPU

y

#18 Como en TrueCrypt, sí. Es mucho más que suficiente.

R

#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

y

#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

R

#60 así si. Aún así, no me fiaría de un sensor externo

Fer_3439

#6 joer qué bien explicado, lo he pillado a la.primera y eso que soy más bien de letras.

JanSmite

10 RANDOMIZE TIME

oliver7

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.

pedrobz

#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.

C

#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.

c

#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 ?

Yagona

#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.

c

#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.

Yagona

#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.

KirO

#24 bienvenido a la teoría del universo determinista.

abnog

Una tarjeta con un detector de rayos cósmicos vendría muy bien como generador de entropía.

p

Tanto como un drama.

guaperas

#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

guaperas

#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

D

#20 Perdona que te corrija, pero el asunto no tiene nada que ver con postulados matemáticos. La aleatoriedad es necesaria para criptografía y ciertas simulaciones, materias que no radican en postulaciones sino en cálculo.

No es una simple distinción filosófica. Los postulados son la base de las teorías, mientras que la aleatoriedad se requiere en determinadas aplicaciones de dichas teorías. Decir que los postulados matemáticos requieren aleatoriedad resulta parecido a decir que es el carro el que tira del caballo.

guaperas

#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.

D

#98 Que sí, pero no has entendido lo que he dicho.

En #20 has escrito que algunos postulados matemáticos se basan en la aleatoriedad, lo cual no tiene mucho sentido. Los postulados no necesitan de ella, sus aplicaciones quizá sí.

Hasta pones un ejemplo de esa confusión. Si algo hace la estadística es justamente buscar la NO aleatoriedad en los datos, y generalmente trata con sucesos mutuamente independientes, que para nada es lo mismo que aleatorios. Otra cosa es que haya gente que los llame ”sucesos aleatorios” porque es lo que se utiliza en las simulaciones. Pero la teoría no depende de esa aleatoriedad.

astronauta_rimador

#1 El aleatorio del Spotify es un drama que sufro constantemente.

p

#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

glups

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.

y

#46 La entropía que genera eso es muy poca cosa. Sirva como ejemplo las colisiones en el kad del eMule.

#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?

y

#97 Lo que necesitas entender es el concepto de entropía

https://en.wikipedia.org/wiki/Entropy_(information_theory)

h

#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.

EmuAGR

Revelaron las claves criptográficas de la PS3 gracias a un fallo igualito:
https://www.engadget.com/2010-12-29-hackers-obtain-ps3-private-cryptography-key-due-to-epic-programm.html

hasta_los_cojones

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.

daphoene

#74 Nos complicamos demasiado la vida. Yo lanzaría en algún proceso Windows la copia de un fichero grande, e iría leyendo el tiempo estimado que queda...

Edito: En cualquier caso, algunos de los procesos de un servidor pueden servir de input aleatorio perfectamente, sobre todo cuantas más librerías cachondas tengas corriendo.

apetor

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.

D

El azar es imposible en cualquier aspecto de la vida, lo más cercano a ello es la cuántica.

y

#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.

Narmer

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.

dilsexico

"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?

swapdisk

#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.

D

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.

swapdisk

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...

y

Solucionado con chips que generan ruido aleatorio como seed de los algoritmos pseudoaleatorios.

No es nada extraordinario, mi router lleva uno de estos.

C

#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.

anv
KirO

#28 pero eso no es aleatoriedad en el ordenador, es un ordenador leyendo un sistema aleatorio.

anv

#91 Si... pero a efectos prácticos funciona.

b

Chainlink VRF

MAD.Max

Con Windows Milenium si que había una verdadera aleatoriedad, te podía surgir cualquier error sin aparecer relación con el anterior

NapalMe

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.

honbu

Con la tecnología blockchain se han conseguido soluciones bastante chulas para este tema como Randao.

b

#36 Chainlink VRF

Jose_Lope

¿Los decimales de pi?, aunque según Carl Sagan en Contact no, pues esconden un mensaje

prejudice

#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

1 2