← Todas las herramientas Utility

Generador de Números Aleatorios

Números aleatorios criptográficos, al instante en tu navegador.

Cómo Funciona la Generación de Números Aleatorios

La verdadera aleatoriedad es sorprendentemente difícil de lograr en software. Los generadores pseudoaleatorios (PRNG) antiguos, como el generador congruencial lineal, producen secuencias que parecen aleatorias pero están completamente determinadas por una semilla inicial. Conociendo la semilla puedes reproducir cada resultado, lo que es útil para simulaciones reproducibles pero inadecuado cuando importa la imprevisibilidad.

Esta herramienta utiliza la función `crypto.getRandomValues()` de la API Web Crypto, que obtiene entropía del PRNG criptográficamente seguro (CSPRNG) de tu sistema operativo. En Linux y macOS esto corresponde a `/dev/urandom`, respaldado por fuentes de entropía de hardware que incluyen la variación temporal de la CPU y, en chips modernos, una instrucción HRNG dedicada (Intel RDSEED/RDRAND, ARM RNDRRS). El resultado es indistinguible de la aleatoriedad verdadera para todos los propósitos prácticos.

Cada número se genera directamente en tu navegador. Ningún valor se envía a ningún servidor. El rango que especificas es inclusivo en ambos extremos: ingresar 1–6 simula fielmente un dado de seis caras.

Enteros, Decimales y Rangos

El modo entero devuelve un número entero dentro del rango elegido. El algoritmo mapea la salida del CSPRNG al intervalo entero exacto sin sesgo: descarta muestras que caen en la cola de un mapeo modular desigual, garantizando que cada valor del rango sea igualmente probable. Este es el mismo enfoque de muestreo por rechazo usado en la generación de claves criptográficas.

El modo decimal devuelve un número con hasta 10 decimales, abarcando el intervalo semiabierto [min, max). Los decimales son ideales para simulaciones de probabilidad, métodos de Monte Carlo o cualquier escenario que requiera una distribución uniforme continua. Para uso científico, nota que se evita deliberadamente `Math.random()` de JavaScript; `crypto.getRandomValues()` llena un buffer entero de 32 bits que luego se escala al rango deseado.

¿Necesitas varios números a la vez? Puedes generar una lista de N valores con un solo clic. Para valores únicos (muestreo sin reemplazamiento), la herramienta cambia automáticamente a una mezcla de Fisher–Yates sobre el conjunto del rango, garantizando que no haya repeticiones.

Casos de Uso Prácticos

Los juegos y simulaciones son los más obvios: tiradas de dados, robos de cartas, semillas de mapas aleatorios, tablas de botín. Como la salida es criptográficamente robusta, también es adecuada para seleccionar ganadores de sorteos o concursos: ningún participante puede predecir o ingeniería inversa el resultado.

Las estadísticas y la ciencia de datos frecuentemente necesitan muestras aleatorias. Ya sea para seleccionar una muestra aleatoria de una lista numerada, asignar sujetos a grupos de tratamiento y control, o hacer bootstrap de un conjunto de datos, un CSPRNG rápido en el navegador elimina la fricción de arrancar Python o R solo para obtener un índice aleatorio.

La educación también se beneficia: los profesores usan selectores aleatorios para llamar a estudiantes al azar, asignar grupos o generar ejercicios con parámetros aleatorios. Como todo se ejecuta localmente, se preserva la privacidad en el aula: ningún dato de estudiante sale del dispositivo.

FAQ

¿Es verdaderamente aleatorio o pseudoaleatorio?

Utiliza la API Web Crypto (`crypto.getRandomValues()`), un PRNG criptográficamente seguro alimentado por entropía a nivel del sistema operativo. Para todos los propósitos prácticos, incluidas aplicaciones criptográficas, la salida se considera verdaderamente aleatoria.

¿Puedo reproducir un resultado usando la misma semilla?

No. A diferencia de los PRNG con semilla, `crypto.getRandomValues()` no expone un parámetro de semilla. Cada llamada obtiene entropía fresca del sistema operativo, por lo que los resultados no pueden reproducirse ni predecirse.

¿Esta herramienta envía mis números a un servidor?

No. Todo el procesamiento se ejecuta completamente en tu navegador. No se transmite ningún dato.

¿Cuál es el rango máximo que puedo usar?

La herramienta admite el rango completo de enteros seguros de JavaScript: −9 007 199 254 740 991 a 9 007 199 254 740 991. Para la mayoría de los usos prácticos, cualquier rango en miles de millones funciona sin problemas.

¿Puedo generar números únicos (sin repetición)?

Sí. Activa la opción "único" para muestrear sin reemplazamiento. La herramienta utiliza una mezcla de Fisher–Yates sobre el conjunto de enteros, garantizando que cada número solicitado sea distinto.

Herramientas relacionadas