Random Number Generator

Random Number Generator

Free client-side developer and designer tool.

Modo de distribución
Tamaño de la muestra0
Valor medio0.00
Valor p de uniformidadp = 1
Densidad de entropía0 bits
Configuración del generador
CSPRNG criptográfico
Rango mínimo
Rango máximo
10
Valores únicos (sin repetición)Evita números duplicados durante la extracción
Decimales de precisiónCantidad de decimales para valores en coma flotante
Secuencia generada(0 Observaciones)
Referencia técnica y guía de arquitectura

Generador de Números Aleatorios & RNG — Guía de referencia

Generador de números aleatorios criptográficos y con semilla de alto rendimiento. Genera enteros, decimales, distribución gaussiana y sorteos sin repetición con telemetría chi-cuadrado en tiempo real.

Generador de Números Aleatorios & RNG — Guía de referencia — Arquitectura en memoria del lado del cliente y flujo de datos
Generador de Números Aleatorios & RNG — Guía de referencia — Arquitectura en memoria del lado del cliente y flujo de datos

Parámetros clave y controles

Límites del rango (Mín y Máx)entero | decimal

Intervalo cerrado [a, b] que delimita todos los valores generados. Admite enteros seguros de 64 bits hasta ±9.007.199.254.740.991 (Number.MAX_SAFE_INTEGER).

Por defecto: 1 a 100
Tamaño de muestra (Cantidad N)entero

Cantidad total de números aleatorios generados por lote de ejecución. Admite de 1 a 10.000 elementos sin bloquear el hilo principal de la interfaz.

Por defecto: 1
Motor de entropía y origenCSPRNG | Mulberry32 PRNG

Permite alternar entre entropía de hardware criptográficamente impredecible (window.crypto) y pseudoaleatoriedad determinista reproducible mediante semilla.

Por defecto: CSPRNG (Web Crypto)
Algoritmo de distribuciónUniforme | Gaussiana | Exponencial

Determina la densidad de probabilidad: la Uniforme asigna idéntica probabilidad a cada valor; la Gaussiana emplea la transformada polar de Box-Muller; la Exponencial modela intervalos de llegada de Poisson.

Por defecto: Uniforme
Modo de muestreo (Reemplazo)Permitir duplicados | Únicos (sin reemplazo)

Al activar el modo sin repetición, el muestreo por reservorio parcial de Fisher-Yates garantiza cero duplicados, requiriendo que Cantidad ≤ Máx - Mín + 1.

Por defecto: Permitir duplicados

Consejos profesionales y mejores prácticas

Sesgo de módulo y por qué las operaciones de residuo nativas arruinan el azar

Las implementaciones básicas suelen calcular rangos con Math.floor(rng() * (max - min + 1)) o mediante el operador de módulo directo (random % range). Cuando el rango total de entropía no es un múltiplo exacto del intervalo objetivo, los números más bajos reciben una ventaja injusta de probabilidad (sesgo de módulo). Nuestra herramienta implementa muestreo por rechazo sobre enteros de 32 bits sin signo (uint32) para garantizar una probabilidad matemáticamente uniforme en cada valor.

Previsibilidad de Math.random() frente a la entropía de hardware CSPRNG

El motor V8 y los navegadores modernos ejecutan Math.random() mediante xorshift128+, un algoritmo optimizado para velocidad gráfica y no para seguridad. Al observar únicamente 2 o 3 salidas consecutivas en coma flotante de 64 bits, es posible reconstruir todo su estado interno de 128 bits usando solucionadores Z3 SMT, lo que permite a un atacante predecir con exactitud todos los números siguientes. Utiliza siempre el motor CSPRNG para sorteos oficiales, generación de tokens, criptografía y loterías.

Transformada de Box-Muller para un muestreo gaussiano exacto

Para generar distribuciones continuas en campana de Gauss, se deben transformar pares de variables aleatorias uniformes independientes U1 y U2 en (0, 1) a desvíos estándar normales: Z0 = sqrt(-2 * ln(U1)) * cos(2 * pi * U2). Nuestro motor computa esta transformada con precisión doble y la escala mediante mu + Z0 * sigma, evitando las aproximaciones toscas de la suma de 12 dados del Teorema del Límite Central que truncan las colas de la distribución.

Problemas comunes y soluciones

⚠️Error al generar valores únicos: la cantidad solicitada supera los números disponibles en el rango

Al activar la extracción única (muestreo sin reemplazo), el principio del palomar dicta que la Cantidad N no puede superar (Máx - Mín + 1). Por ejemplo, extraer 60 números únicos entre 1 y 50 es matemáticamente imposible. Amplía el intervalo [Mín, Máx], reduce la cantidad N o desactiva la exclusión para permitir duplicados.

⚠️La prueba de bondad de ajuste chi-cuadrado muestra alta varianza o desviación en muestras pequeñas

La prueba de chi-cuadrado de Pearson sigue de forma asintótica una distribución chi-cuadrado únicamente cuando la frecuencia esperada en cada intervalo (bin) cumple E_i >= 5. Si evalúas lotes reducidos (por ejemplo, N = 20 distribuidos en 10 intervalos, donde E_i = 2), la varianza aleatoria de Poisson generará valores p extremos de forma natural. Para auditar la uniformidad con rigor estadístico, genera al menos entre 500 y 1.000 muestras.

Preguntas frecuentes (FAQ)

¿Cómo generar números aleatorios sin duplicados ni repeticiones?▼

Para generar números aleatorios sin repetición, la herramienta aplica muestreo sin reemplazo mediante el algoritmo de barajado Fisher-Yates. A partir de una secuencia de valores del mínimo al máximo, el algoritmo selecciona iterativamente un índice aleatorio criptográficamente seguro y lo intercambia con la posición actual, extrayendo N valores únicos en tiempo lineal O(N) y garantizando que cada permutación tenga exactamente la misma probabilidad.

¿Cuál es la diferencia entre un CSPRNG y un generador pseudoaleatorio tradicional?▼

Un generador de números pseudoaleatorios (PRNG) utiliza una fórmula matemática de recurrencia a partir de una semilla inicial; si la semilla se conoce, toda la secuencia es 100% determinista y predecible. En cambio, un CSPRNG (como window.crypto.getRandomValues) recopila entropía física impredecible procedente de interrupciones de hardware y ruido térmico del sistema operativo, superando la prueba del siguiente bit donde ningún algoritmo en tiempo polinómico puede predecir los bits sucesivos.

¿Cómo se generan números aleatorios que sigan una distribución normal o gaussiana?▼

Nuestro generador aplica la transformada polar de Box-Muller para proyectar dos variables uniformes independientes en dos variables aleatorias normales estándar con media 0 y varianza 1. Posteriormente, el resultado se escala según la fórmula X = mu + Z * sigma, lo que permite modelar fenómenos del mundo real como tiempos de carrera, percentiles biométricos, márgenes de error de medición o fluctuaciones financieras.

¿Cómo verifica la prueba de chi-cuadrado que los números están distribuidos uniformemente?▼

La prueba de bondad de ajuste chi-cuadrado divide el intervalo [Mín, Máx] en k contenedores equivalentes y calcula el estadístico chi2 = sum((Observado - Esperado)^2 / Esperado), donde Esperado = N / k. Al contrastar el estadístico obtenido frente a la distribución chi-cuadrado con k - 1 grados de libertad, la herramienta obtiene un valor p: un valor p situado entre 0,05 y 0,95 confirma que la distribución de la muestra concuerda con un azar teórico perfecto.

¿Por qué Math.random() de JavaScript no es seguro para criptografía ni sorteos?▼

Math.random() no es criptográficamente seguro ni admite semillas nativas en navegadores web. Su algoritmo interno (xorshift128+ en motores V8/Chrome y PCG en WebKit/Safari) cuenta con un espacio de estados reducido que puede deducirse por completo tras observar una secuencia corta de valores, lo que lo hace vulnerable a ataques de ingeniería inversa en rifas, sorteos, generación de tokens de seguridad y operaciones criptográficas.

Herramientas y utilidades relacionadas

Todas las herramientas →