Generador de números aleatorios
Genera uno o varios números enteros aleatorios dentro de un rango, con un modo opcional sin duplicados — al instante, en tu navegador.
Esta página se tradujo del inglés con ayuda de IA y se cotejó con el original. Leer la versión en inglés
- Gratis — No requiere registro
- Instantáneo — Los resultados se actualizan mientras escribes
- Privado — Procesado en tu navegador
Elegir a un ganador, muestrear filas para una comprobación puntual, tirar dados, generar datos de prueba: en el fondo, todo es la misma petición, obtener números dentro de un rango de forma justa. El generador de arriba hace justo eso, con una opción para extracciones sin reemplazo.
Cómo funciona
Indica el mínimo y el máximo (ambos incluidos y ambos enteros) y cuántos valores quieres, de 1 a 1000. Después elige entre dos comportamientos:
- Con repeticiones (por defecto): cada valor se extrae de forma independiente, así que los duplicados son posibles y, en un rango pequeño, probables. Es lo que necesitas para dados, simulaciones y cualquier cosa que modele sucesos independientes.
- Únicos: los valores se extraen sin reemplazo, de modo que ningún número aparece dos veces. La herramienta construye el rango completo, lo baraja con el algoritmo de Fisher–Yates y toma los n primeros. Si pides más valores únicos de los que contiene el rango, te dice cuántos son realmente posibles en lugar de quedarse en un bucle infinito.
Las entradas se validan en lugar de corregirse en silencio: un mínimo mayor que el máximo, un límite no entero o una cantidad fuera de rango producen un mensaje. Regenerar extrae una serie nueva y Copiar todo lleva los valores al portapapeles como una lista separada por comas.
La aleatoriedad es criptográfica
Esto importa más de lo que parece. El generador usa crypto.getRandomValues() de la Web Crypto API, no Math.random().
Math.random() es un generador pseudoaleatorio rápido, sembrado a partir de una fuente no especificada. Sirve perfectamente para dar un poco de jitter a una animación o barajar un carrusel. No sirve para nada en lo que alguien tenga un incentivo para predecir el resultado, porque su estado interno puede reconstruirse a partir de un número modesto de salidas observadas, y esto se ha demostrado contra motores de navegador reales. Un sorteo con premio, un token, una rifa, una auditoría por muestreo que alguien podría impugnar: todo esto necesita una fuente criptográficamente segura, que es justo lo que proporciona getRandomValues().
El barajado también importa. Fisher–Yates es la única forma no sesgada de permutar una lista en tiempo lineal; el popular one-liner array.sort(() => Math.random() - 0.5) produce una distribución con un sesgo medible, porque los algoritmos de ordenación por comparación dan por hecho un comparador coherente, y este no lo es.
Todo se ejecuta en local. Ni tu rango, ni la cantidad, ni los resultados salen del navegador.
Cuándo no usarlo
Contraseñas y claves. Un número aleatorio no es una contraseña. Usa el generador de contraseñas, que elige a partir de un espacio de caracteres mucho mayor, o el generador de UUID para identificadores que tienen que ser únicos más que impredecibles. Nunca construyas un secreto concatenando números de un rango que has elegido tú.
Tests reproducibles. La aleatoriedad criptográfica no admite semilla, y precisamente de eso se trata; pero eso la convierte en la herramienta equivocada para datos de prueba que necesitas regenerar de forma idéntica. Usa un PRNG con semilla dentro del propio test o fija los valores como fixture. Un test cuya entrada cambia en cada ejecución es un test que falla de forma intermitente por motivos que nadie puede reconstruir. Fundamentos del testing explica dónde tiene cabida el determinismo y dónde la aleatoriedad de los tests basados en propiedades aporta de verdad.
Cualquier cosa que requiera un registro auditable. La herramienta no guarda ningún registro. Para un sorteo que deba poder verificarse a posteriori, necesitas un procedimiento documentado y una semilla o un compromiso publicados, no una pestaña del navegador.
Los números aleatorios en seguridad
La aleatoriedad predecible es una causa raíz recurrente de incidentes de seguridad: identificadores de sesión, tokens de restablecimiento de contraseña, nonces CSRF y vectores de inicialización han caído por culpa de generadores que nunca se diseñaron para resistir la predicción. La regla es sencilla y absoluta: todo lo que un atacante gane adivinando debe salir de un CSPRNG (crypto.getRandomValues() en el navegador, SecureRandom en Java, secrets en Python), y todo lo demás puede usar el rápido. Fundamentos de la seguridad de la información trata la entropía y el papel de estas primitivas; OWASP Top 10 cubre las categorías en las que la aleatoriedad débil aparece de verdad.
Preguntas frecuentes
- ¿Qué tan aleatorios son estos números?
- Los números se generan con crypto.getRandomValues de la API Web Crypto, adecuado para rifas, muestreos y juegos, pero no pensado como generador de claves criptográficas.
- ¿Qué hace la opción "Sin repetidos"?
- Garantiza que cada número del resultado sea único, lo que requiere que el rango elegido contenga al menos tantos valores como la cantidad solicitada.
- ¿Se envía algo a un servidor?
- No. Los números se generan totalmente en tu navegador.