Mcatorce Suite
← Volver al blog

Cómo Funcionan los Generadores de Números Aleatorios y Cómo Mantener Sorteos Justos

La diferencia entre aleatoriedad pseudoaleatoria y criptográfica, por qué el sesgo del módulo distorsiona resultados y cómo se hace un barajado justo y un sorteo sin repetidos.

Prueba la herramienta: Números Aleatorios, Dados y Sorteo de Listas

Elegir a un ganador, tirar dados o barajar una lista parece trivial, pero hacerlo de forma justa requiere cuidado. Importan tanto la calidad de la fuente aleatoria como el algoritmo.

Números pseudoaleatorios

La mayoría de los lenguajes de programación ofrecen un generador como Math.random en JavaScript. Produce números a partir de una fórmula matemática que parte de una semilla oculta. La salida parece aleatoria y sirve para animaciones o juegos, pero es predecible si alguien averigua el estado interno, y el estándar no garantiza su calidad para nada importante.

Aleatoriedad criptográfica

Los navegadores también ofrecen crypto.getRandomValues, que se alimenta de las fuentes de entropía del sistema operativo y está diseñado para ser impredecible. Es la opción adecuada para sorteos en los que la justicia importa, como regalos o elecciones en clase. El selector la usa y no se envía nada a un servidor.

El problema del sesgo del módulo

Un error común es tomar un número aleatorio de 32 bits y usar el resto de dividirlo entre el tamaño del rango. Cuando el rango no divide exactamente la cantidad de valores posibles, algunos resultados pasan a ser un poco más probables que otros. La solución es el muestreo con rechazo: descartar los valores aleatorios de la cola desigual y volver a sortear, de modo que cada resultado tenga exactamente la misma probabilidad.

Barajados justos

Ordenar una lista con una función de comparación aleatoria parece un barajado, pero produce resultados desiguales. El método correcto es el barajado de Fisher-Yates, que recorre la lista e intercambia cada elemento con otro elegido al azar que aún no está fijado. Así todos los órdenes son igual de probables.

Sorteos sin repetidos

Para elegir varios ganadores distintos de una lista, baraja y toma los primeros, o quita a cada ganador antes del siguiente sorteo. Sortear de forma independiente con reemplazo podría elegir el mismo nombre dos veces.

Preguntas frecuentes

¿Tirar un dado es lo mismo que un número aleatorio? Una tirada de dado es un entero aleatorio entre 1 y el número de caras, repetido para cada dado.

¿Puedo demostrar que un sorteo fue justo? No solo con una captura de pantalla. Para sorteos regulados sigue las normas locales sobre testigos y registros.