Generadores aleatorios
Cinco generadores con la misma fuente de azar. Lo que los distingue es la forma de la respuesta y quién la lee.
Las 5 herramientas
- Generador de cadenas aleatoriasCadenas seguras de cualquier longitud y alfabeto.
- Generador de letras aleatoriasUna letra al azar, con la ñ, o muchas de una vez.
- Generador de códigos aleatoriosCupones, vales y números de serie, por lotes.
- UUID Generator (en inglés)Version 4 UUIDs, single or by the hundred.
- Generador de PINPIN numéricos que nunca son 1234.
¿Cuál necesitas?
Los cinco sacan el azar de la misma fuente criptográfica del navegador, así que ninguno es más aleatorio que otro. La pregunta nunca es «cuál es el más fuerte», sino qué aspecto tiene que tener el resultado y quién o qué lo va a leer.
| Si necesitas | Usa | Aspecto |
|---|---|---|
| Un valor largo que va a leer una máquina | Cadenas aleatorias | UNvnWaXPLYZz… |
| Un carácter cada vez, para leerlo en voz alta | Letras aleatorias | ñ |
| Un lote de códigos que canjeará un cliente | Códigos aleatorios | A7K9-P2XM-4RTV |
| Un identificador que no puede repetirse en ningún sitio | UUID (en inglés) | 8f14e45f-ceea-… |
| Dígitos protegidos por un límite de intentos | PIN | 810938 |
Por qué decide la forma
Una cadena aleatoria y una letra aleatoria salen de la misma función. La diferencia es que la cadena se copia como un solo valor y la letra se lee en voz alta: por eso una es una línea de texto y la otra, una ficha grande que se ve desde el otro lado de una clase.
Un código de canje va más allá: alguien lo teclea a mano desde una tarjeta impresa, así que se agrupa de cuatro en cuatro, evita los caracteres que se confunden y puede llevar un carácter de control que detecta una errata antes de buscarlo.
Los dos que no van realmente de azar
Un UUID (en inglés) tiene el tamaño justo para que nadie tenga que coordinarse: con 122 bits aleatorios, dos sistemas pueden generar identificadores para siempre sin consultarse. Su trabajo es no repetirse, no que nadie lo adivine.
Un PIN está en el otro extremo: lo bastante corto para un teclado numérico, y seguro solo porque algo cuenta los intentos fallidos. Su página muestra las probabilidades con un bloqueo tras tres intentos en lugar de un nivel de seguridad, porque eso es lo que decide de verdad.
La misma fuente, cinco interfaces
Todos los valores de estas páginas salen de la fuente aleatoria criptográfica del navegador. Cuatro de los generadores —cadenas, letras, códigos y PIN— la convierten en caracteres o dígitos con el mismo código de muestreo por rechazo, y eso es lo que evita que las primeras letras salgan un 11 % más que las demás.
Un UUID no necesita ese paso: sus bytes aleatorios se escriben tal cual en hexadecimal, y la versión 4 sale directamente de crypto.randomUUID(), la función del propio navegador. Math.random() no se usa en ninguna parte.
Compartir ese código hace que una corrección llegue a los cuatro a la vez. Las interfaces son distintas porque quien saca una letra para una clase y quien prepara datos de prueba quieren cosas diferentes de la misma aritmética.
Preguntas frecuentes
¿Qué generador aleatorio debo usar?
Elige por la forma de la respuesta. Una cadena aleatoria es un valor largo que lee una máquina; una letra aleatoria es un solo carácter que se lee en voz alta; un código aleatorio es un lote de códigos cortos que la gente teclea; un UUID es un identificador que no puede repetirse en ningún sitio; un PIN son dígitos para un teclado que limita los intentos.
¿Los resultados son realmente aleatorios?
Salen del generador criptográficamente seguro del navegador —crypto.getRandomValues(), o crypto.randomUUID() en los UUID de la versión 4—, que se alimenta de la fuente aleatoria segura del sistema operativo. En sentido estricto es un generador pseudoaleatorio, pero su salida no se puede predecir sin conocer su estado interno. Cuando los valores aleatorios se convierten en caracteres o dígitos, el muestreo por rechazo hace que todos sean exactamente igual de probables.
¿Puede salir dos veces el mismo valor?
En principio, sí: cada elección es independiente. Lo probable que sea depende de cuántos valores admite el formato. Con 122 bits aleatorios, un UUID repetido no es un problema práctico, mientras que un PIN de 4 dígitos solo tiene 10 000 posibilidades. El generador de códigos aleatorios es la excepción dentro de un lote: nunca repite un código.
¿Por qué las longitudes predeterminadas son tan distintas?
Porque cada valor se defiende de algo distinto. Un PIN puede ser corto porque el teclado cuenta los intentos fallidos. Un código de canje tiene 12 caracteres de inicio para que adivinar uno válido siga sin tener sentido aunque se hayan emitido miles. Una cadena aleatoria tiene 32 porque puede acabar siendo un secreto atacado sin conexión, donde nada cuenta los intentos.
¿Puedo descargar los resultados?
En tres de ellos. El generador de cadenas aleatorias descarga la lista como archivo de texto, igual que el de UUID, y el de códigos aleatorios la descarga como CSV con la cabecera «code», lista para importar en lote. Los generadores de PIN y de letras aleatorias copian al portapapeles.