Más juegos en WuGames.ioPatrocinadoDescubre juegos de navegador gratis — juega al instante, sin descargas ni registro.Jugar

Generador de Números Aleatorios

Generador de números aleatorios online y gratis. Elige un número entre cualquier mín y máx, genera uno solo o una lista, con paso y delimitador personalizables.

Solo caben %max% valores únicos en este rango y paso; la lista se recortó.

¿Cómo se generan los números aleatorios?

Hay dos familias: números aleatorios verdaderos y números pseudoaleatorios. La diferencia importa más de lo que parece.

Aleatoriedad verdadera: viene de procesos físicos que no se pueden predecir ni siquiera en principio: tiempos de desintegración radiactiva, ruido atmosférico captado por un micrófono, ruido térmico dentro de los osciladores en anillo de una CPU. La aleatoriedad es fundamental, no solo opaca. Los generadores de hardware en los chips modernos (RDRAND de Intel y AMD, TrustZone de ARM) alimentan entropía directamente de estas fuentes.

Pseudoaleatoriedad: viene de algoritmos deterministas — Mersenne Twister, xorshift, PCG, ChaCha20. Dado el mismo semilla (seed), siempre producen la misma secuencia. Son extremadamente rápidos y tienen excelentes propiedades estadísticas (pasan pruebas como Diehard y TestU01), pero no son impredecibles para quien conoce el algoritmo y la semilla. crypto.getRandomValues del navegador mezcla salida pseudoaleatoria con entropía del sistema operativo y resiembra con frecuencia, por eso se considera criptográficamente fuerte aunque técnicamente sea un PRNG.

¿Por qué importa la diferencia?

Criptografía: claves de cifrado, tokens de sesión y handshakes TLS necesitan ser impredecibles. Un fallo en la fuente aleatoria puede romper todo el sistema — recordemos el bug de OpenSSL de Debian de 2008, que dejó unas 250 000 claves SSH adivinables.

Equidad: en juegos, apuestas y loterías, la aleatoriedad predecible es explotable. Los RNG certificados (los que usan los casinos regulados) exigen tanto fortaleza criptográfica como rastro de auditoría.

Simulación: los métodos Monte Carlo en física, finanzas y aprendizaje automático corren sobre enormes volúmenes de números aleatorios. La velocidad importa más que la fortaleza criptográfica — la mayoría de investigadores usa Mersenne Twister o PCG, con semilla fija para reproducir resultados.

Tokens de seguridad: enlaces de recuperación de contraseña, claves API y secretos 2FA deben ser impredecibles. Un generador débil aquí falla en silencio: nada se rompe visiblemente, pero el atacante adivina el token.

Muestreo: en encuestas y estadística, cada miembro de la población debe tener la misma probabilidad de ser elegido. Un generador sesgado produce datos sesgados, y el sesgo a menudo no se nota hasta que la conclusión ya es errónea.

Acerca del Generador de Números Aleatorios

Elige un número entre cualquier mínimo y máximo, o genera una lista entera de una vez. Este generador usa la fuente de aleatoriedad criptográficamente fuerte del navegador (crypto.getRandomValues, la misma primitiva que produce las claves de sesión TLS) en lugar del clásico Math.random, que es rápido pero predecible: un atacante con paciencia puede reconstruir su estado interno tras observar unas pocas salidas. Para sorteos cotidianos — «quién va primero», «en qué restaurante hoy», un sorteo en la oficina — Math.random sirve. Para cualquier escenario donde la predicción importe, la fuente criptográfica es la opción correcta.

El parámetro de paso (step) controla la separación entre valores permitidos. Paso 1 en rango 1-10 da los enteros 1, 2, 3, ... 10. Paso 0.5 con el mismo rango da 1, 1.5, 2, 2.5, ... 10. Paso 2 en rango 0-20 da los pares. Si pones la longitud de lista mayor que 1, pasas del modo de un único tiro al modo lote y los resultados se unen con el delimitador que elijas — útil para datos de prueba rápidos. Activa «Números únicos (sin repetir)» para sacar una muestra sin reposición, donde cada valor es distinto — justo lo que necesitan sorteos, rifas y la asignación aleatoria; crypto.getRandomValues no admite semilla, así que cada tirada es nueva y no se puede repetir.

Preguntas Frecuentes

Sí: tira de crypto.getRandomValues, que la Web Crypto API del W3C define como criptográficamente fuerte. En la práctica el navegador delega en el pool de entropía del sistema operativo (/dev/urandom en Linux/macOS, BCryptGenRandom en Windows), la misma fuente que usan las librerías TLS y los generadores de claves SSH. Matiz: «sirve para cripto» significa que la fuente de entropía es buena; que el caso de uso sea seguro depende también de cómo manejes la salida. Generar una clave de 256 bits aquí y pegarla en un chat público derrota la idea al instante. Para uso local puntual (una contraseña fuerte, un token de sesión en tu propia app), la calidad de aleatoriedad es equivalente a la de una librería criptográfica profesional.

Desde esta herramienta, no — crypto.getRandomValues está deliberadamente diseñada para no aceptar semilla, de manera que las salidas no se puedan repetir. Si necesitas aleatoriedad reproducible (simulación estadística, depuración, trabajo científico), usa un PRNG con semilla. En JavaScript, instala mulberry32 o un generador con semilla similar y pásale una semilla fija; misma semilla, misma secuencia. Compromiso: una secuencia con semilla es reproducible, pero quien aprenda la semilla puede repetirla — así que no uses PRNG con semilla para seguridad.

Con seguridad hasta 2^53 - 1, es decir unos 9,007 billones (9 007 199 254 740 991). Ese es el Number.MAX_SAFE_INTEGER de JavaScript — el límite superior de enteros representables con exactitud en un flotante de 64 bits sin redondeo. Más allá, los enteros pierden precisión (la diferencia entre números representables supera 1). Para la mayoría de los usos — dados, lotería, porcentajes, valores financieros — este techo es irrelevante; solo importa para generar IDs muy grandes o nonces criptográficos, donde de todos modos usarías otra herramienta (basada en BigInt o salida en hex).

Pon mín en 0, máx en 1 y paso en una fracción pequeña como 0.01 o 0.001 según la precisión que necesites. Paso 0.01 da dos decimales (0.00 a 1.00). Paso 0.001 da tres. Si quieres una salida uniforme continua (cualquier real en [0, 1)), la primitiva subyacente es Math.random — y para ese caso, llamar a Math.random() en la consola suele ser más rápido que pasar por la herramienta. Para decimales con peso o no uniformes (gaussianos, exponenciales), necesitas una herramienta especializada — este generador es uniforme dentro del rango pedido.

Por defecto sí: cada número se genera de forma independiente, así que los duplicados no solo son posibles, son habituales. Con rango 1-10 y lista de 10, casi siempre hay repeticiones y faltan valores (es el «problema del cumpleaños» en acción). Cuando necesitas una muestra única — por ejemplo, sacar 10 números distintos de 1-100 — activa el interruptor «Números únicos (sin repetir)» en las opciones avanzadas (modo lote). Hace muestreo sin reposición: cada valor de la salida es distinto. Si pides más números de los que el rango puede dar, la lista se recorta automáticamente a la cantidad de valores disponibles y se muestra un aviso.

Activa «Generar varios números» para mostrar las opciones avanzadas, después enciende el interruptor «Números únicos (sin repetir)» y fija la longitud de lista con la cantidad de extracciones que quieras. El generador construye el conjunto completo de valores permitidos (mín, mín+paso, ... máx) y lo baraja con un mezclado Fisher-Yates impulsado por crypto.getRandomValues, y luego toma los primeros N — así cada número extraído es distinto. Es exactamente lo que necesitan un sorteo de lotería, una rifa, la asignación aleatoria de grupos de prueba/tratamiento o cualquier muestreo estadístico sin reposición. Ejemplo: rango 1-49, longitud 6 da seis números de lotería distintos; rango 1-10, longitud 10 devuelve una permutación aleatoria completa del 1 al 10. Si la longitud pedida supera los valores disponibles, la lista se recorta y un aviso indica cuántos valores únicos eran posibles.

Math.random() está diseñado para velocidad y corrección estadística, no para ser impredecible. Históricamente, distintos navegadores han usado distintos algoritmos: V8 (Chrome, Node) usa xorshift128+, SpiderMonkey (Firefox) usa xorshift; todos son rápidos pero con estados internos pequeños (~128 bits). Hay investigaciones que muestran que observar unas pocas centenas de salidas consecutivas basta para reconstruir el estado interno y predecir todos los valores futuros. Para juegos, animaciones y barajar un mazo en una experiencia offline de un solo jugador, Math.random() está bien. Para cualquier escenario multijugador, próximo al juego de azar o relacionado con seguridad, crypto.getRandomValues es lo correcto — y es lo que usa este generador.

El generador produce valores de la forma mín + k × paso, donde k es un entero no negativo, recortado a ≤ máx. Así, rango 1-10 con paso 3 produce el conjunto {1, 4, 7, 10}, no enteros arbitrarios entre 1 y 10. Rango 0-1 con paso 0.1 da {0, 0.1, 0.2, ... 1.0}. Si el paso no divide exactamente (máx − mín), el valor máximo alcanzable queda justo por debajo del máx — por ejemplo 0-10 con paso 3 da {0, 3, 6, 9} (el 10 solo es alcanzable si equivale a mín + k × paso para algún k). Usa paso 1 para tiradas de dados con enteros normales.

No. La generación ocurre íntegramente del lado del cliente: mín, máx, paso y los números resultantes nunca salen de la página. No registramos, no enviamos a analítica ni transmitimos nada. La única actividad de red de esta página es cargar sus propios recursos (HTML, CSS, JS). Abre la pestaña Red del navegador antes de pulsar Generar; no verás peticiones nuevas. Por eso la herramienta es apta para uso criptográfico — una clave generada solo se filtraría si tú la copias y la pegas en algún sitio inseguro.
Generador de Números Aleatorios — Generador de números aleatorios online y gratis. Elige un número entre cualquier mín y máx, genera uno solo o una lista,
Generador de Números Aleatorios