Generador de números aleatorios

Elige un rango y cuántos números necesitas: se sortean con el generador criptográfico de tu navegador, perfecto para sorteos, juegos, concursos y partidas de bingo.

El sorteo ocurre en tu navegador: no se envía ni se registra nada.

Por qué usamos crypto.getRandomValues en lugar de Math.random

Este generador se apoya en crypto.getRandomValues, la fuente de aleatoriedad criptográficamente segura integrada en tu navegador, combinada con muestreo por rechazo para evitar sesgos: todos los números del rango tienen exactamente la misma probabilidad de salir. El conocido Math.random, pensado para animaciones y juegos, no ofrece las mismas garantías de imprevisibilidad: así que para sortear premios, elegir un ganador entre amigos o cualquier elección «a ciegas», la versión criptográfica es la mejor apuesta.

Sortear con o sin repeticiones

Con «solo números únicos» tienes un sorteo como el de una lotería o un bombo de bingo: cada número puede salir una sola vez, así que la cantidad que pidas no puede superar el tamaño del rango (del 1 al 100 puedes sortear como mucho 100 números). Desmarca la casilla y funciona como tirar un dado una y otra vez: las repeticiones son posibles y del todo normales, útil para simular tiradas de dados, generar cifras de prueba o producir datos de muestra aleatorios.

Qué significa «aleatorio» para un ordenador

Un ordenador es una máquina determinista: por sí solo no sabe producir nada verdaderamente aleatorio. Los generadores normales parten de una semilla y aplican una fórmula, así que la secuencia es calculable: conociendo suficientes números salidos, se predicen los siguientes.

Los generadores criptográficos recogen en cambio desorden real del sistema: los microsegundos entre dos pulsaciones de tecla, los tiempos de respuesta del disco, el ruido del hardware. Es la diferencia entre un número apto para un juego y uno sobre el que se puede sostener un sorteo impugnable.

El error del módulo

La forma ingenua de obtener un número entre 1 y 10 de un generador es tomar el resto de la división por 10. Casi funciona: si el intervalo de partida no es un múltiplo exacto del número de resultados, los primeros valores salen un pelín más a menudo que los últimos.

En un dado de seis caras el sesgo es invisible, en un sorteo con muchos participantes se vuelve medible. El remedio correcto es descartar y repetir cuando el número cae en la cola que desequilibra: cuesta un intento de vez en cuando y devuelve una distribución realmente uniforme.

Las secuencias aleatorias no parecen aleatorias

En una serie de cien números entre 1 y 10, que salga el mismo número dos veces seguidas es normal y pasa a menudo; lo sospechoso es la ausencia total de repeticiones. La sensación de que «este generador se repite demasiado» es casi siempre un fallo de intuición, no del programa.

Es el mismo motivo por el que algunas aplicaciones de música tuvieron que hacer la reproducción aleatoria menos aleatoria que la de verdad: la gente se quejaba de las canciones repetidas. El azar honesto agrupa, y un azar «que parece aleatorio» en realidad ha sido domesticado.

Herramientas cercanas

Para sortear nombres en vez de números está Sorteo aleatorio, y para una elección seca entre dos opciones ¿Sí o no?. Si hace falta una contraseña impredecible, el camino es Generador de contraseñas.