RNG — generador de números aleatorios
RNG en tres letras: un número aleatorio ahora mismo.
RNG significa random number generator, y en programación suele aludir a los pseudoaleatorios: un algoritmo determinista al que se le da una semilla. La distinción importa, porque un PRNG con semilla sirve para un juego y no sirve para nada relacionado con seguridad.
Esta página usa la fuente criptográfica del navegador, que es la respuesta honesta a «dame un número aleatorio» cuando no hay ningún estado de semilla detrás. Si lo que quieres es el código, abajo están los dos errores clásicos que conviene evitar.
Cómo se usa
- Fija el rango; 1-100 sirve tal cual.
- Genera tantas veces como quieras.
- Si vas a copiar código de otro sitio, lee antes la nota técnica.
Los dos errores de casi todos los fragmentos de RNG
El primero es Math.floor(Math.random() * n) + 1: parece correcto, pero usa un PRNG no criptográfico y pierde precisión con rangos grandes. El segundo es aplicar % n al resultado de crypto.getRandomValues(), que introduce sesgo de módulo cuando n no divide 2^32 y favorece ligeramente a los valores bajos.
El patrón correcto es el rejection sampling: extraer 32 bits, descartar lo que caiga en la franja incompleta y repartir el resto entre n. Cuesta una nueva extracción ocasional y elimina el sesgo por completo. secrets.randbelow(n) de Python ya lo hace; en JavaScript hay que escribirlo.
Revisado el 2026-10-21. Esta herramienta funciona por completo en tu navegador: sin servidor, sin cuenta y sin guardar nada de lo que generas.
Preguntas frecuentes
¿Qué significa RNG?
Random number generator. Cuando la fuente es criptográfica se llama CSPRNG, y no parte de una fórmula con semilla sino del depósito de entropía del sistema.
¿Esto es aleatoriedad verdadera?
No. La aleatoriedad verdadera requiere una fuente física de entropía. Esto es un pseudoaleatorio criptográfico sembrado por el sistema, del mismo tipo que usan el navegador y el servidor para TLS.
¿Cómo lo hago en JavaScript?
Con crypto.getRandomValues y rejection sampling, como se describe arriba. Para usos sin implicaciones de seguridad, Math.random() basta; para tokens, contraseñas o cualquier valor que no deba predecirse, no.
Herramientas relacionadas
Más de Números aleatorios.