// The Central Randomizer 1.3 (C) 1997
// by Paul Houle (paul@honeylocust.com)
// See: http://www.honeylocust.com/javascript/randomizer.html
rnd.today=new Date();
rnd.seed=rnd.today.getTime();
function rnd() {
rnd.seed = (rnd.seed*9301+49297) % 233280;
return rnd.seed/(233280.0);
};
function rand(number) {
return Math.ceil(rnd()*number);
};
Carl Tashian publicó hace tiempo este magnífico artículo que pasé por alto en mi radar titulado Una breve historia de los números aleatorios. En él se cuentan bastantes cosas sobre cómo a lo largo de los tiempos se han generado números aleatorios, deteniéndose en algunas historias especialmente curiosas.
El artículo comienza con los métodos más antiguos conocidos, como los dados de piedra o los caparazones de tortuga, a los que habría que sumar los huesos, las monedas o los sacos con bolitas. También se menciona uno de los trabajos que surgieron al principio de los tiempos de la computación el clásico A Million Random Digits with 100,000 Normal Deviates (1940), una larguísima serie de dígitos aleatorios en cientos de páginas, básicamente «un libro de una inutilidad obvia, aunque su existencia a la vez implica que debe tener cierta utilidad, o nadie se hubiera molestado en publicarlo», según lo calificó el matemático Chris Staecker.
Una vez los humanos pasamos de tratar los dígitos aleatorios a mano a hacerlo con computadoras surgieron los generadores de números pseudoaleatorios, funciones matemáticas deterministas que generan secuencias que parecen aleatorias sin en realidad serlo: en realidad son cíclicas y se repiten, aunque en la práctica esa secuencia puede ser tan larga como se necesite.
También se habla de los generadores físicos con ruido, calor, contadores Geiger y similares, que todavía se usan hoy en día. Además del generador llamado Mersenne Twister (tornado de Mersenne), habla también de cómo métodos criptográficos más avanzados necesitan algoritmos más seguros, pero por suerte se han podido desarrollar, de modo que es fácil encontrarlos si no en las funciones básicas de muchos lenguajes de programación, al menos en librerías matemáticas o especializadas.
Un detalle que me encantó fue el de una máquina llamada ERNIE (Electronic Random Number Indicator Equipment) que diseñaron los mismísimos rompecódigos de Bletchley Park en los años 40. ¿Era para algo increíblemente importante y avanzado relacionado con altos secretos? Más bien fue para algo más mundano: para generar los números ganadores de la llamada lotería de los Bonos Premium (Premium Bonds) del Reino Unido.
Lo gracioso de esta lotería es que se trata de un sorteo oficial que todavía existe, y cuya mecánica es de lo más curiosa: la gente no compra boletos para participar sino que invierte en bonos cuyo interés se reparte entre algunos bonos agraciados en el sorteo mensual. Las probabilidades de ganar son un poco complicadas de explicar, pero a día de hoy están alrededor de 1/24.000 por cada libra invertida, con premios que varían entre 25 libras y 1 millón.
Lo curioso de este mecanismo es que podría decirse que es un sorteo azaroso en el que nunca se pierde (si no se tiene en cuenta la inflación, claro). La «inversión» en estos bonos equivale, más a menos, a un interés del 2,35% anual. El dinero siempre está ahí, y de vez en cuando (un 0,05% de las veces) aumenta si toca algo en el sorteo, que es mensual. De ahí que el gobierno necesitara la supermáquina ERNIE para elegir las participaciones o bonos ganadores. A la gente parece que le encantó que el ordenador pudiera ser completamente justo e inocente en la elección de los premiados cada vez que se realizaba el sorteo.
Relacionado:
- Las matemáticas de la generación de números pseudoaleatorios
- La evolución de los generadores de números aleatorios
- Generadores de números aleatorios que no se ven tan aleatorios
- Algoritmos para generación de números aleatorios
- Lámparas de lava, péndulos caóticos y partículas radioactivas
- La curiosa historia del algoritmo de aleatoriedad poco aleatorio
- ¿Qué es la aleatoriedad? ¿Y qué NO es?
- Un generador cuántico de bits aleatorios
- ¿Existe realmente la aleatoriedad?
- Un generador de números aleatorios alimentado por muones
- Código para comprobar la aleatoriedad de secuencias
- Los humanos no somos buenos generando secuencias aleatorias
- La elusiva aleatoriedad y los algoritmos perfectamente predecibles
- Una nuevo generador cuántico de números aleatorios que llega al límite de «lo más aleatorio posible»
- La calidad de los generadores de números aleatorios
- HotBits: números verdaderamente aleatorios desde el mundo cuántico