El módulo std/random provee un generador de números pseudoaleatorios xorshift64 rápido, y std/uuid genera UUID versión 4 según RFC 4122. Ambas son utilidades comúnmente necesarias para pruebas, simulaciones e identificadores de sistemas distribuidos.
// Números aleatorios y UUID v4 import "std/random" import "std/uuid" // bool -> texto: int_to_string() espera un int y un bool no se convierte solo, // así que la conversión se escribe explícita. fn si_no(b: bool) -> String { if b { return "si" } return "no" } fn main() -> int { // Generar 3 números aleatorios entre 1 y 100 print("Numeros aleatorios (1-100):") let r1: int = random_range(1, 100) let r2: int = random_range(1, 100) let r3: int = random_range(1, 100) print(" " + int_to_string(r1)) print(" " + int_to_string(r2)) print(" " + int_to_string(r3)) // random_bool let b: bool = random_bool() print("random_bool: " + si_no(b)) // random_float en [0.0, 1.0) let f: float = random_float() print("random_float: (generado)") // Generar un UUID v4 let id: String = uuid_v4() print("uuid_v4: " + id) print("longitud uuid: " + int_to_string(id.length())) // Validar que el UUID es valido let valido: bool = uuid_is_valid(id) print("uuid valido: " + si_no(valido)) // Generar otro UUID — debe ser diferente let id2: String = uuid_v4() print("segundo uuid: " + id2) print("son distintos: " + si_no(id != id2)) return 0 }
Numeros aleatorios (1-100): 9 5 35 random_bool: si random_float: (generado) uuid_v4: 3d0702c0-6c28-4ecf-b36c-0281c464bea4 longitud uuid: 36 uuid valido: si segundo uuid: 6b14c32d-27b3-4c1a-83e8-d6a093a5f501 son distintos: si
Cómo funciona
random_range(lo, hi) retorna un entero uniformemente distribuido en el rango inclusivo [lo, hi]. random_bool() retorna true o false con igual probabilidad, y random_float() retorna un float en [0.0, 1.0). Los tres se apoyan en el generador xorshift64 sembrado a partir del reloj del sistema al iniciar el programa.
uuid_v4() genera un string de 36 caracteres en el formato canónico de UUID xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx. El 4 en el tercer grupo codifica la versión, y los bits altos del cuarto grupo codifican la variante. Cada llamada produce un nuevo UUID aleatorio; la probabilidad de que dos UUID colisionen es astronómicamente pequeña.
uuid_is_valid(s) valida que un string se ajusta al formato UUID — útil para sanear entradas de usuario o valores de configuración antes de tratarlos como identificadores. La aserción final confirma que dos UUID generados por separado siempre son distintos.