Generador de números aleatorios

Genera números aleatorios justos y sin sesgo en cualquier rango usando el generador criptográfico de tu navegador (crypto.getRandomValues()) — con opción de no repetir, decimales y ordenado. No se sube nada. Última revisión: 2026-06-19.

Ajustes rápidos:

Cómo se generan los números

Cada número sale de crypto.getRandomValues(), la fuente de aleatoriedad criptográficamente segura del navegador: la misma entropía que tu sistema operativo usa para crear claves de cifrado. No se puede sembrar con una semilla, no se puede predecir y no se puede reproducir.

Para los enteros aplicamos muestreo por rechazo: se toma un valor de 32 bits y se descarta cualquier extracción que caiga en la pequeña zona sobrante que, de otro modo, haría que algunos números salieran un poco más a menudo que otros. El resultado es una distribución uniforme: cada valor de tu rango tiene exactamente la misma probabilidad, incluso cuando el rango no es una potencia de dos. Ese es justo el sesgo que introduce en silencio el atajo de multiplicar Math.random() por el tamaño del rango.

Pseudoaleatorio frente a grado criptográfico

Una computadora es una máquina determinista, así que producir azar de verdad es sorprendentemente difícil. Hay dos caminos. Un generador de números aleatorios verdaderos (TRNG) mide un fenómeno físico impredecible — ruido térmico de un circuito, ruido de radio atmosférico, el instante de una desintegración radiactiva o efectos cuánticos como un fotón atravesando un divisor de haz — y lo convierte en bits. El azar viene de la naturaleza, por lo que la salida no se puede repetir, pero recogerla es lento.

Un generador pseudoaleatorio (PRNG) es una fórmula matemática que arranca de un valor inicial llamado semilla y produce una secuencia larga que parece aleatoria. Es rápido y cómodo, pero completamente determinista: quien conozca la semilla y el algoritmo reproduce la secuencia exacta, y esa secuencia acaba repitiéndose al cabo de una longitud llamada periodo. Esa reproducibilidad a veces es una ventaja — permite repetir una simulación científica idéntica — pero es una debilidad grave cuando lo que importa es que nadie pueda adivinar el resultado.

Un PRNG criptográficamente seguro (CSPRNG) exige mucho más que pasar pruebas estadísticas. Debe superar la prueba del bit siguiente: viendo todos los bits producidos hasta ahora, ningún algoritmo eficiente debe acertar el bit siguiente mejor que lanzando una moneda. Y debe resistir el compromiso de estado: aunque se filtre su estado interno, un atacante no debe poder reconstruir los números que ya había entregado. El Math.random() de JavaScript falla en ambas cosas: está pensado para animaciones y juegos, su estado se puede recuperar a partir de la salida, y la especificación no garantiza ninguna calidad concreta de aleatoriedad. El famoso Mersenne Twister, con un periodo enorme y muy buenas propiedades estadísticas, tampoco es seguro: con solo 624 salidas observadas se puede reconstruir su estado interno y predecir todo lo demás. Calidad estadística y seguridad criptográfica son requisitos distintos.

Rangos, y por qué un rango justo es más difícil de lo que parece

Supón que quieres un número entre 1 y 6 y dispones de un generador que devuelve un byte (de 0 a 255). El atajo perezoso es tomar el resto: el byte módulo 6, más 1. Pero 256 no es múltiplo de 6. Los valores de 0 a 251 se reparten en seis grupos de 42 exactos, y los cuatro valores restantes, del 252 al 255, caen en los grupos del 1, 2, 3 y 4: esos cuatro resultados salen algo más a menudo que el 5 y el 6. Eso es el sesgo de módulo. En un dado el desvío es minúsculo, pero crece con el rango y sí importa en claves criptográficas, sorteos grandes o muestreo científico. El muestreo por rechazo lo elimina por completo.

Puedes usar cualquier rango, incluidos números negativos. Si escribes el mínimo mayor que el máximo, la herramienta los intercambia sola. Los valores se limitan a un intervalo entre −1.000.000.000 y 1.000.000.000, y cada lote puede tener como máximo 1.000 números; ese límite es justamente el que garantiza que todo el rango quepa en una sola extracción de 32 bits sin sesgo. Si eliges entre 1 y 4 decimales, el generador devuelve valores decimales uniformes dentro del rango; con 0 decimales devuelve enteros por la vía sin sesgo.

Números únicos y sorteos justos

Con la casilla Únicos (sin repetir) desactivada, cada número se extrae de forma independiente, así que un mismo valor puede repetirse, igual que al tirar un dado varias veces. Activada, todos los números de la salida son distintos: es el muestreo sin reemplazo, el que necesitas para una lotería, para elegir varios ganadores diferentes o para sacar una muestra representativa de una población. Si pides más números únicos de los que caben en el rango — por ejemplo 10 valores únicos entre 1 y 5 — la cantidad se recorta automáticamente al tamaño del rango y verás un aviso. La opción de únicos solo tiene sentido con enteros, así que se desactiva cuando eliges decimales.

Para un sorteo limpio, el procedimiento es sencillo: numera a los participantes del 1 a N, pon el rango de 1 a N, activa «Únicos» si repartes varios premios, indica cuántos ganadores quieres y pulsa Generar. Como todos los valores son igual de probables, la selección es imparcial. Conviene además fijar las reglas antes de generar y grabar la pantalla o hacerlo delante de los participantes: el sorteo se produce en vivo en tu dispositivo, no en un servidor, así que nadie puede alterarlo a posteriori. Una advertencia útil: las personas somos pésimos generadores aleatorios. Al pedir un dígito del 1 al 10, muchísima gente elige el 7, y casi nadie repite el mismo número dos veces seguidas, aunque el azar real produce rachas continuamente. Ese mismo instinto alimenta la falacia del jugador, la idea equivocada de que tras varias caras «toca» una cruz.

Usos habituales

Para quéAjuste recomendado
Sorteo o rifaRango de 1 al número de participantes, cuántos = número de ganadores, Únicos activado
Tirar un dadoDe 1 a 6 (o de 1 a 20 para juegos de mesa)
Lanzar una monedaDe 0 a 1 (0 = cara, 1 = cruz)
Sorteo tipo loteríaDe 1 a 49, cuántos = 6, Únicos activado
Muestra sin reemplazoDe 1 al tamaño de la población, cuántos = tamaño de la muestra, Únicos activado
Decimales aleatoriosMínimo 0, máximo 1, decimales de 2 a 4

Preguntas frecuentes

¿Es de verdad aleatorio este generador de números aleatorios?
Usa la API crypto.getRandomValues() del navegador, que toma valores del generador criptográficamente seguro del sistema operativo, la misma fuente de entropía que emplean los gestores de contraseñas y TLS. A diferencia de Math.random(), no se puede sembrar ni predecir, así que los resultados no se pueden reproducir. Para los enteros, además, el muestreo por rechazo hace que cada valor del rango sea exactamente igual de probable.
¿Puedo usarlo para un sorteo y que sea justo?
Sí. Numera a los participantes del 1 a N, ajusta el rango, activa «Únicos» si hay varios ganadores y genera. Todos los valores tienen la misma probabilidad y la extracción no tiene sesgo. Para dar transparencia, anuncia las reglas antes y graba la pantalla: el resultado se produce en directo en tu equipo.
¿Qué hace exactamente la opción «Únicos (sin repetir)»?
Obliga a que todos los números de la salida sean distintos, es decir, muestreo sin reemplazo. Desactivada, cada número se extrae por separado y puede repetirse. Si pides más valores únicos de los que caben en el rango, la cantidad se ajusta sola al tamaño del rango.
¿Sale algún dato de mi navegador?
No. Cada número se genera localmente con la CPU y la entropía de tu propio dispositivo. No se sube, transmite ni registra nada, y la página sigue funcionando sin conexión una vez cargada.

Herramientas relacionadas

Descubre más herramientas

Ver las 90 herramientas →