Generador de números aleatorios
Genera enteros o decimales aleatorios uniformes, valores con distribución normal (gaussiana) o una secuencia reproducible a partir de una semilla, usando la fuente aleatoria criptográficamente segura de tu navegador, con control de duplicados y ordenación.
Escrito por Suhaib Hassan. Nuestra metodología.
Los enteros, decimales y valores gaussianos usan crypto.getRandomValues (un CSPRNG) para una aleatoriedad genuina obtenida del navegador; el modo con semilla usa un PRNG determinista (mulberry32), de modo que la misma semilla siempre reproduce la misma secuencia.
Nada sale de tu navegador: no se registra ni se envía ningún número, y una ejecución con semilla es totalmente reproducible para pruebas.
—
Distribución de la muestra
Dónde cae cada valor dentro de su rango.
Desarrollo paso a paso
—
Cómo genera números cada modo
- Entero / Decimal: usa
crypto.getRandomValues, la misma fuente criptográficamente segura que usan los navegadores para los tokens de seguridad, de una calidad muy superior aMath.random(). - Gaussiana: combina dos valores uniformes de un CSPRNG con la transformada de Box–Muller para producir valores con distribución normal con la media y la desviación estándar que elijas.
- Con semilla: usa el algoritmo determinista mulberry32: la misma semilla siempre produce la misma secuencia, útil para pruebas y simulaciones reproducibles (no para seguridad).
Por Suhaib Hassan · Revisado el 29 de septiembre de 2026 · Cómo verifica CalculatePilot las fórmulas →
Fuentes
- Box, G. E. P., & Muller, M. E. (1958). A note on the generation of random normal deviates. Annals of Mathematical Statistics 29(2), 610–611.
- W3C (2017). Web Cryptography API — especificación de
Crypto.getRandomValues().
Preguntas frecuentes
¿Es adecuado para claves criptográficas?
Los modos Entero y Decimal obtienen los valores de crypto.getRandomValues, el generador criptográficamente seguro del navegador, por lo que la aleatoriedad en bruto es adecuada. Para material de claves real, usa una biblioteca criptográfica específica que gestione correctamente la codificación y los formatos de clave; esta herramienta es para números aleatorios de uso general.
¿Qué significa “sin duplicados”?
Realiza un muestreo sin reemplazo —como sacar bolas de lotería sin devolverlas— de modo que cada valor del resultado es distinto. Requiere que el rango contenga al menos tantos valores como solicitas.
¿Por qué usar un generador con semilla en lugar de aleatoriedad verdadera?
Un generador con semilla (determinista) permite reproducir exactamente la misma secuencia “aleatoria” más adelante: esencial para depurar simulaciones, compartir ejemplos reproducibles o escribir pruebas con resultados predecibles.
¿Cómo crea la transformada de Box–Muller una distribución normal?
Toma dos números aleatorios uniformes independientes y aplica √(−2 ln u₁)·cos(2πu₂) (y una variante con seno), lo que se puede demostrar matemáticamente que produce exactamente valores normales estándar N(0,1), que luego se escalan por σ y se desplazan por μ.
¿Por qué no se usa Math.random() aquí?
Math.random() no está especificado como criptográficamente seguro y su algoritmo varía según el navegador. crypto.getRandomValues() es un estándar web diseñado específicamente para una aleatoriedad impredecible y de alta calidad.
Calculadoras relacionadas
Continúa con la estadística.