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

¿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 necesitasUsaAspecto
Un valor largo que va a leer una máquinaCadenas aleatoriasUNvnWaXPLYZz…
Un carácter cada vez, para leerlo en voz altaLetras aleatoriasñ
Un lote de códigos que canjeará un clienteCódigos aleatoriosA7K9-P2XM-4RTV
Un identificador que no puede repetirse en ningún sitioUUID (en inglés)8f14e45f-ceea-…
Dígitos protegidos por un límite de intentosPIN810938

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.