Cómo generar números al azar con ordenadores que no son tan aleatorios

Un millón de dígitos aleatorios es una tabla publicada por la RAND Corporation publicada en 1947 como ayuda para científicos, ingenieros y estadísticos que necesitaban utilizar números aleatorios de comprobada validez.
Un millón de dígitos aleatorios es una tabla publicada por la RAND Corporation publicada en 1947 como ayuda para científicos, ingenieros y estadísticos que necesitaban utilizar números aleatorios de comprobada validez. Travelin' Librarian

Muchos programas de ordenador necesitan números aleatorios para funcionar. Desde videojuegos a sistemas de seguridad y simuladores. Los valores aleatorios se utilizan para el análisis estadístico, el arte o simplemente cuando hay que elegir algo al azar, como en los sorteos. Sin embargo, la aleatoriedad perfecta que atribuimos a objetos como monedas, dados o las bolas de un bombo es algo difícil de alcanzar cuando se trata de generarla con ordenadores.

MÁS INFORMACIÓN

La precisión de los ordenadores y su carácter determinista son la clave del asunto. Un ordenador o un programa siempre dará los mismos resultados de salida ante los mismos datos de entrada. Al menos mientras no se introduzca entremedias algún tipo de factor aleatorio.

Pero es precisamente en los generadores de números aleatorios donde está el problema. En realidad no son "tan aleatorios". Sirva como ejemplo el famoso botón de "reproducción aleatoria" de los iPod y otras aplicaciones musicales, que crea listas de canciones al azar. Incluso Apple tuvo que afinar la forma en que funcionaba porque había gente que se quejaba de que era "poco aleatoria".

Cómo funciona la simulación del azar

Un generador de números aleatorios está limitado por su propia definición. Suelen funcionar así: se toma un valor inicial (llamado semilla), se realizan con él ciertas enrevesadas operaciones matemáticas y de ahí surge el resultado. Si el generador está bien diseñado cada vez que se utilice ofrecerá un nuevo número y la secuencia será aleatoria. O al menos, lo más aleatoria posible. El problema es que cada vez que se comience por la misma semilla la secuencia será idéntica. Como decía el matemático y pionero de la informática Donald Knuth: "los números al azar no deberían generarse mediante un método elegido al azar".

Podría pensarse que los propios números ya generados pueden utilizarse como semilla. De este modo el proceso tiende a volverse más desordenado e impredecible cada vez. ¿O no? Esto tiene un límite: la precisión de cálculo de esos valores. Supongamos que la semilla puede ser cualquier número entre 0 y 65535. Todo funcionará bien hasta que al cabo de 65536 valores alguno haya de repetirse obligatoriamente. Si un generador está bien diseñado e implementado pasará por el mayor número de valores posibles antes de entrar en el ciclo (y esos posibles valores serán muchos). Pero al final, tarde o temprano, acabará repitiéndose.

Una solución de compromiso es utilizar factores externos, por ejemplo los movimientos del ratón del ordenador o las milésimas de segundo que marca el reloj interno cuando se llama a la función aleatoria – factores poco predecibles. Pero no suelen resolver el problema; por ejemplo el reloj del ordenador puede coincidir en sus ciclos con los de los cálculos de la función aleatoria, y los movimientos del ratón están limitados por su precisión. Debido a todo esto estos algoritmos tuvieron humildemente que cambiar de nombre y técnicamente se denominan generadores de números pseudo-aleatorios. No son aleatorios, pero "casi".

Pruebas de aleatoriedad

Serie de fotografías de satélite del colapso de la barrera de hielo Larsen C entre junio y abril de 2002.

ampliar foto

Serie de fotografías de satélite del colapso de la barrera de hielo Larsen C entre junio y abril de 2002. NASA

Para comprobar las secuencias y los generadores pseudo-aleatorios se utilizan diversas pruebas estadísticas. El problema es que matemáticamente no existe la prueba perfecta. Una muy sencilla sería comprobar si al aplicarlos a la secuencia de lanzamientos de un dado simulado aparecen más o menos las mismas veces los valores 1, 2, 3… etcétera. Otras pruebas similares exigen comparar las secuencias de dos o tres valores consecutivos (11, 12, 13…) y comparar sus frecuencias.

Curiosamente hay secuencias que pasan todas estas pruebas sin ser aleatorias. Quizá la más famosa de ellas es el número de Champernowne, que comienza así: 0,1234567891011121314… Es simplemente una larga ristra con todos los números naturales. Todos sus decimales, ya sean tomados de uno en uno, de dos en dos o de tres en tres, aparecen más o menos con la misma frecuencia.

Localización de la barrera Larsen C y de la barrera Wordie y el sistema glaciar Fleming con las posiciones de los frentes de hielo desde 1947 hasta 2016.

ampliar foto

Localización de la barrera Larsen C y de la barrera Wordie y el sistema glaciar Fleming con las posiciones de los frentes de hielo desde 1947 hasta 2016. Chen Zhao/Christopher Watson/Matt Kings

Si bien los generadores pseudoaleatorios superan las pruebas más sencillas muchos de ellos fracasan ante la aleatoriedad necesaria para las aplicaciones de análisis numérico o criptografía. Teniendo en cuenta que los resultados de innumerables estudios científicos dependen de lo primero y la seguridad del dinero que guardamos en los bancos y enviamos por internet de lo segundo, más vale que existan métodos mejores.

Tasa de adelgazamiento de la región del glaciar Fleming entre (a) 2002-2008 y (b) 2008-2015.

ampliar foto

Tasa de adelgazamiento de la región del glaciar Fleming entre (a) 2002-2008 y (b) 2008-2015. Chen Zao/Christopher Watson/Matt Kings

Una forma que encontraron los matemáticos de comprobar con mayor precisión la aleatoriedad de una secuencia es intentando describirla mediante un pequeño programa que pudiera generarla. Una secuencia como "1111…111" repetida mil veces no parece muy aleatoria, porque puede reducirse a la frase "escribir 1 mil veces", algo mucho más corto. En cambio, algo como "10010111100…" donde los 0 y 1 se obtienen lanzando una moneda –curiosamente, igual de probable estadísticamente que la primera secuencia– no podría describirse de forma más breve. Esto se conoce como complejidad de Kolmogorov (o entropía algorítmica) y es clave para cuantificar la aleatoriedad.

Irónicamente esta complejidad de Kolmogorov no puede calcularse, aunque sí que se pueden conocer sus límites, por ejemplo comprimiendo la información: la que no sea aleatoria podrá comprimirse un poco (porque se podrá resumir) mientras que la verdaderamente aleatoria no podrá comprimirse (dado que no habrá repeticiones ni patrones detectables). Esto está íntimamente relacionado con la entropía o "desorden" de la secuencia en cuestión.

Los problemas de no usar correctamente la aleatoriedad pueden ser graves. Tal y como comentaba el experto Sergey Ignatchenko de ITShare.com la versión Debian del Linux fue básicamente insegura entre 2006 y 2008 porque uno de los desarrolladores hizo un cambio en el código de su generador de números aleatorios. Lo mismo sucedió en 2013 con una función del lenguaje Java que limitó su aleatoriedad, permitiendo descubrir claves de carteras de Bitcoin, por ejemplo. En la web de apuestas Planet Poker cometieron en 2000 el error de usar un generador aleatorio pobremente diseñado, que era incapaz de generar todas las mezclas posibles para las barajas, quedando solo un pequeño número que podía estudiarse estadísticamente para obtener ventaja – básicamente era como "poder ver las cartas de los oponentes".

Física al rescate

Lejos quedan libros como Un millón de dígitos aleatorios, una tabla que la RAND Corporation publicó en 1947 para quienes necesitara números al azar de comprobada validez. Desde hace décadas, sitios como Random.org ofrecen en internet números "verdaderamente aleatorios" para todo tipo de propósitos: análisis científicos, juegos, sorteos… Dicen que su calidad es superior a la de los generadores de números pseudoaleatorios porque obtienen los números de procesos puramente físicos, en su caso del "ruido atmosférico". Básicamente se trata de tres radios AM/FM sintonizadas entre emisoras, en la zona donde todo lo que se oye es ruido de fondo. Ese ruido es aleatorio y a partir de él se generan los números que luego se preparan para ofrecerse en diversos formatos.

Además de esta ingeniosa solución que emplea el ruido electrónico hay sistema similares basadas en otros procesos físicos que se consideran impredecibles y son normalmente subatómicos: desintegración radioactiva, ruido térmico o el ruido de disparo (shot) típico de los dispositivos electrónicos y ópticos.

Por otro lado, sitios como Random Sanity Project ofrecen comprobaciones gratuitas de la aleatoriedad de cualquier grupo de números. Algo interesante si se planea utilizar software de este tipo para algo importante o simplemente para comprobar que todo es correcto

Por otro lado, sitios como Random Sanity Project ofrecen comprobaciones gratuitas de la aleatoriedad de cualquier grupo de números. Algo interesante si se planea utilizar software de este tipo para algo importante o simplemente para comprobar que todo es correcto. También permite detectar cómo los seres humanos no somos muy buenos generando secuencias aleatorias. Basta examinar una secuencia simulada por un humano intentando imitar los lanzamientos de una moneda o un dado para darse cuenta rápidamente de cuál es la auténtica: las personas apenas superamos las pruebas más básicas debido a nuestros sesgos mentales.

La aleatoriedad de la física cuántica

El último paso en esta carrera por conseguir la aleatoriedad son los generadores aleatorios que aprovechan las propiedades de las partículas subatómicas y el mundo cuántico para generar secuencias aleatorias.

En 2010 el físico español Antonio Acín formó parte de un equipo que publicó un trabajo en Nature acerca de cómo se podía certificar la aleatoriedad de secuencias numéricas aprovechando el teorema de Bell de la mecánica cuántica. En 2012 dos profesores de la Universidad Nacional Australiana desarrollaron un generador basado en la medición del vacío, del que surgen aleatoriamente partículas virtuales produciendo ruido aleatorio. En 2016 investigadores de la Universidad Politécnica de Cataluña desarrollaron un chip capaz de generar varios gigabits aleatorios por segundo usando las propiedades cuánticas de la luz.

Hoy en día las CPU Ivy Bridge de Intel incluyen este tipo de generadores de números aleatorios basados en procesos físicos; sus velocidades generándolos están en torno a los 3 Gbps. Tampoco es demasiado complicado –ni siquiera caro– comprar tarjetas de ampliación especializadas o dispositivos USB que realizan la misma función: basta elegir el método preferido (diodos, ruido eléctrico, efecto fotoeléctrico) y la velocidad deseada, que comienza alrededor de los 100 Kbps. Su precio: a partir de 10 euros. Nunca conseguir lo más parecido al azar verdadero, algo que no es tarea fácil, fue tan barato ni tan cómodo.

Archivado en: Leer mas

One Tecno

Tech

Windows 7 sigue siendo el rey de las PC de escritorio a pesar de las grande actualizaciones de Windows 10

6 septiembre, 2017

Microsoft lanzó la actualización Windows 10 Creators, también conocida como Redstone 2, en abril de este año, con muchas mejoras, pero tuvo muchos problemas de compatibilidad y errores.
Y es por eso que no ha generado una diferencia en términos de cuota de mercado, Windows 10 sigue creciendo a un ritmo lento y los usuarios de Windows 7 no ven la necesidad de actualizar.
La firma NetMarketShare, la cual hace estudios de mercado, coloca a Windows 7 en el primer lugar de los sistemas operativos de escritorio con un 48,43 por ciento, mientras que Windows 10 esta en el segundo lugar con un 27,99 por ciento.

Estas cifras muestran que aunque Windows 7 está perdiendo algunos puntos de participación, lo hace muy lento, y el mes pasado, el sistema operativo se redujo de 48,91 por ciento a solo 48,43 por ciento.
Windows XP sigue siendo la tercera opción para los usuarios de escritorio, con un 6,07 por ciento, con la misma cuota de mercado que Windows 8.1.
La buena noticia es que Windows XP sigue bajando su cuota de mercado, aunque al igual que Windows 7, todo el proceso se está llevando a cabo a una velocidad que no hace feliz a Microsoft, ya que XP perdió sólo 0,03 por ciento del mercado el mes pasado.
Windows Vista, un sistema operativo que también llegó a su fin este año, también está cayendo, y el mes pasado registró una participación de sólo 0,46 por ciento. Afortunadamente, no muchos sistemas estaban utilizando Vista cuando Microsoft lo desconectó.
En cuanto al futuro de Windows 10, se espera que la cuota de mercado aumento en los próximos meses, especialmente porque estamos a nada de una nueva versión.
La actualización Windows 10 Fall Creators llegara este 17 de octubre.
La entrada Windows 7 sigue siendo el rey de las PC de escritorio a pesar de las grande actualizaciones de Windows 10 aparece primero en HD Tecnología. […]

Tech

Juanito Arcade Mayhem, un juego Argentino que rememora las glorias de los 80s

2 septiembre, 2017

La gente de Game Ever Studios se mandaron un juego al viejo estilo PANG de los años 80, pero con esteroides. Lanzado recientemente el 3 de Agosto en Steam Juanito Arcade Mayhem nos pone en la piel de un niño que con un set de armas diferentes que iremos obteniendo, deberemos salvar a las viejas glorias de los videojuegos arcade de los 80s de sucumbir ante los virus que los atacan.
Con unos gráficos increíbles, una historia corta pero entretenida, y mucha acción y dificultad en sus niveles finales, Juanito Arcade Mayhem nos hará pasar unas horas entretenidas, con una dificultad mas que interesante, y con enemigos siempre cambiantes y niveles diferentes: Para los que recuerdan las glorias de Donkey Kong, Wonderboy, Tetris, entre otros.

La mecánica es muy fácil, si alguna vez jugaron al Pang, sabrán de que hablamos, y sino se los explico: Disparar con nuestro personaje Juanito hacia arriba solamente, moviéndonos horizontalmente tratando de esquivar enemigos y disparos, listo no hay mas. Ahora..-¿como hicieron de algo tan simple algo efectivo y que te den ganas de seguir jugando? Porque los gráficos son increíbles, la música esta orientada a cada nivel de cada juego arcade de los 80s en la que nos encontramos, la dificultad de cada nivel (salvo algún que otro sobresalto) es la adecuada y se va incrementando de a poco en la curva de dificultad, y porque la acción no para nunca.

Si a esto de que es entretenido, visualmente increíble y la música y física ayudan mucho, se agregan 80 niveles, 10 armas diferentes, Jefes a los que enfrentar en el nivel 10 de cada mundo, y hasta modo Survival infinito para dejarte mas histerico que nunca.
Juanito por el precio de 10 dólares es un gran entretenimiento para los que le gustan los juegos que emulan los viejos arcades, y juegan un poco con nuestra pasión por la memorabilia.
Les dejamos aquí algunos de los primeros 3 mundos que hemos jugado ¡para que vean de que va este adictivo fichin! ¡Gracias a Game Ever Studios por dejarnos probarlo!

La entrada Juanito Arcade Mayhem, un juego Argentino que rememora las glorias de los 80s aparece primero en HD Tecnología. […]

Tech

¿Quieres visitar la Estación Espacial Internacional desde tu sofá?

1 agosto, 2017

La Estación Espacial Internacional (ISS) gira sobre nuestro mundo a 400 kilómetros de altura desde hace 16 años. Desde entonces, por un breve período de tiempo, se ha convertido en el hogar de las personas que componen su tripulación, permitiéndoles investigar aspectos tan diversos como la reacción del cuerpo humano ante la microgravedad, el estudio de los ciclones, o la monitorización de los desechos de nuestros océanos. Y, cada noventa minutos, completa una órbita sobre la Tierra a una velocidad de 7,7 kilómetros por segundo, lo que hace que recorra cerca de 27.000 kilómetros en una hora. Subir a bordo de ella no es tarea fácil.Seguir leyendo. […]

ONE News

News

Línea Rave: tu pase a las mejores fiestas

18 septiembre, 2017

En THUMP México estamos de manteles largos con la visita de dos personajes de la electrónica actual: Jeff Mills y Objekt; así que no pierdas más el tiempo scrolleando tu Facebook y mejor dedícate a […]

Be the first to comment

Escribe un comentario

Tu dirección de correo no será publicada.


*