En este artículo
¿Qué es la generación de números aleatorios?
La generación de números aleatorios es el proceso de producir números que no pueden predecirse de antemano. Las computadoras son máquinas deterministas — no pueden producir verdadera aleatoriedad sin entrada externa. Distintas técnicas producen diferentes calidades de aleatoriedad, lo que importa enormemente para aplicaciones de seguridad.
Los generadores de números verdaderamente aleatorios (TRNG) recolectan entropy de fenómenos físicos: movimiento del ratón, tiempos de pulsación de teclas, tiempos de llegada de paquetes de red o sensores de hardware dedicados. Los generadores de números pseudoaleatorios (PRNG) usan algoritmos matemáticos alimentados con entropy para producir secuencias que parecen aleatorias.
Cómo se generan los números aleatorios
CheckTown utiliza el generador de números aleatorios criptográficamente seguro del navegador.
- Fuente de entropy — usa window.crypto.getRandomValues() que extrae entropy a nivel del sistema operativo
- Mapeo de rango — mapea valores aleatorios en bruto a tu rango mínimo/máximo especificado sin sesgo
- Generación por lotes — genera múltiples números a la vez para listas, arrays o necesidades masivas
Pruébalo gratis — sin registro
Generar números aleatorios →Cuándo usar un generador de números aleatorios
La generación de números aleatorios tiene numerosas aplicaciones en desarrollo, pruebas y estadística.
- Pruebas — genera datos de prueba aleatorios para poblar fixtures o inicializar bases de datos de prueba
- Muestreo — selecciona muestras aleatorias de conjuntos de datos para análisis estadístico o asignación de pruebas A/B
- Juegos y simulaciones — genera entradas impredecibles para simulaciones, juegos o sorteos
Preguntas frecuentes
¿Cuál es la diferencia entre Math.random() y crypto.getRandomValues()?
Math.random() usa un PRNG rápido inicializado al arrancar. Es adecuado para simulaciones y juegos, pero no para seguridad. crypto.getRandomValues() usa el CSPRNG del sistema operativo (PRNG Criptográficamente Seguro), que es adecuado para generar tokens, claves y otros valores sensibles para la seguridad. Siempre usa crypto.getRandomValues() para propósitos de seguridad.
¿Puedo usar números aleatorios para claves criptográficas?
Sí, pero solo si se generan con un CSPRNG. Los números aleatorios producidos por Math.random() u otros PRNG no criptográficos son predecibles conociendo la semilla y suficientes muestras de salida. Las claves criptográficas, tokens, sales y nonces deben generarse con aleatoriedad criptográficamente segura.
¿Qué es el sesgo de módulo y cómo afecta los rangos de números aleatorios?
El sesgo de módulo ocurre al mapear un valor aleatorio a un rango usando el operador %. Si el espacio de valores aleatorios no es divisible de forma uniforme por el tamaño del rango, algunos valores aparecen con más frecuencia que otros. Por ejemplo, mapear 0-255 a 0-9 usando % 10 hace que los valores 0-5 aparezcan ligeramente más a menudo. CheckTown utiliza muestreo por rechazo para eliminar este sesgo.