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

A la cárcel por una pulsera Fitbit

17 julio, 2017

El pasado mes de abril, una pulsera de actividad Fitbit se convirtió en una de las principales pruebas de cargo en un homicidio en una causa que provocó un gran revuelo en Estados Unidos. El wearable fue testigo silencioso de la lucha a muerte entre Connie Dabate y su misterioso asesino; el dispositivo midió los bruscos movimientos y las pulsaciones hasta detener toda actividad a las 10:05, la que fue considerada como hora de la muerte de la mujer. Fue gracias a esta pulsera que se descubrió la identidad del asesino: su propio marido. Y es que los dispositivos conectados se están convirtiendo en pruebas de cargo y como testigos mudos de delitos que son posteriormente resueltos gracias a la información registrada por los mismos.Seguir leyendo. […]

Tech

G.SKILL presenta sus memorias 2x8GB 4400 C19 y 8x8GB 4200 C19 para la plataforma X299

4 julio, 2017

Hace poco Intel presentó su plataforma X299 durante Computex, y nos sorprendieron las demostraciones de los IMC que tienen los procesadores para esta plataforma, manejando altas velocidades sin problema alguno.
Ahora G.Skill presentó algunos kits de memoria para esta plataforma, destacándose el kit para Kaby Lake-X de 2x8GB 4400 19-19-19-39, disponible tanto en la linea TridentZ RGB, como en las nuevas TridentZ Black, y también su kit 8x8GB 4200 C19 para Skylake-X, disponible en varios colores como también en RGB.
Esto demuestra la increíble capacidad de los diferentes IMC, alcanzando 4200 C19 en Quad Channel y con 8 módulos en simultaneo, además de la calidad de los chips que se está logrando obtener últimamente.
Durante Computex G.Skill hizo demos de 2x8GB 4800 C19, aunque por supuesto es muy difícil alcanzar suficientes chips que alcancen esta frecuencia estable 24/7 como para producir una tanda comercial, y es por eso que aún no se verán frecuencias tan elevadas en el mercado, pero si se ha logrado en 4400MHz, y muy pronto estaremos viendo también los kits de 4500MHz de G.Skill.
Estos son los otros kits lanzados por G.Skill en el día de hoy:

La entrada G.SKILL presenta sus memorias 2x8GB 4400 C19 y 8x8GB 4200 C19 para la plataforma X299 aparece primero en HD Tecnología. […]

Tech

Review Asus ROG Crosshair VI Hero

4 septiembre, 2017

Asus nos envió para revisión la Crosshair VI Hero, la edición de legendaria linea Crosshair de la linea Republic Of Gamers para la plataforma AM4 sobre la cual el mundo gamer tuvo sus ojos en este año.
Recordemos que la linea Crosshair es la linea de ROG para CPUs AMD para la plataforma para consumidores generales, y comenzó con la Asus Crosshair basada en el chipset NVIDIA nForce 590, soportando CPUs AM2 y AM2+, y luego fue evolucionando hasta llegar a la Crosshair V Formula que aún hoy en día tiene el record de frecuencias en CPU, y ahora la Crosshair VI Hero y la recientemente lanzada Crosshair VI Extreme para la plataforma AM4.
Esta placa madre se encuentra 100% orientada al segmento de gama alta, sin ni siquiera tener salidas de video para los APUs, dejando en claro su diseño hacia Ryzen 7 o Ryzen 5 pese a brindar compatibilidad con toda la linea AM4.
Características y Tecnologías

Una característica interesante de esta placa madre es el soporte a disipadores tanto para el zócalo AM3 como para el zócalo AM4, gracias a tener los agujeros de ambos zócalos sobre su PCB.

Como la mayoría de las placas madre de 2017, cuenta con iluminación RGB, en este caso bajo la tecnología Aura Sync de Asus. Las zonas iluminadas en la placa madre son el cobertor del panel I/O, y el disipador del chipset. además podemos conectar tiras RGB, y sincronizar otros dispositivos como GPUs Asus, y AIOs o memorias ram con soporte a Aura Sync.

Tiene un sistema de sonido SupremeFX basado en el SupremeFX S1220 (Realtek ALC1220 renombrado), que trabaja en conjunto con un buffer RC4580, y el DAC ESS9023P, junto a componentes de máxima calidad en el circuito como capacitores nichicon y un generador de reloj de alta precisión.

La conexión entre el CPU y los zócalos de ram se realiza a través de pistas diseñadas bajo la topología T de Asus, asegurando un mejor rendimiento, y mayores frecuencias. Gracias a esto se tiene compatibilidad a 3200MHz en las primeras bios y ahora hasta 3733MHz con las bios de AGESA 1.0.0.6.

Para la conexión a ethernet tiene un controlador Intel I211-AT, para reducir las conexiones con el CPU y mejorar el ancho de banda de TCP y UDP, logrando un mejor rendimiento en la conexión LAN.
La entrada Review Asus ROG Crosshair VI Hero aparece primero en HD Tecnología. […]

ONE News

Be the first to comment

Escribe un comentario

Tu dirección de correo no será publicada.


*