El desarrollador conocido como Casper presenta urandom, una bifurcación de la crate rand de Rust que reune en un único envoltorio llamado Random las operaciones habituales de generación de números aleatorios (uniform, choose, shuffle, sample, chance). Frente a rand, donde estas funciones aparecen dispersas entre varios traits como RngExt, IndexedRandom y SliceRandom, urandom las expone como métodos inherentes, lo que facilita su descubrimiento mediante el autocompletado del editor.
La API interna difiere también en puntos clave. El trait Rng de urandom está sellado: no permite enchufar generadores arbitrarios, sino que ofrece una selección cerrada de algoritmos (Xoshiro256, ChaCha12) considerados buenas opciones por defecto. El autor justifica esta decisión arguing que rara vez se obtiene un beneficio real al sustituir el generador, mientras que sellar el trait le permite optimizar conjuntamente generador y algoritmos.
En las pruebas comparativas, urandom usa la misma familia Xoshiro256 que rand 0.10.2 para usos no criptográficos y ChaCha12 para los criptográficos, pero ofrece métodos especializados next_f32 y next_f64 que aprovechan la función de salida más barata de Xoshiro256+. El benchmark muestra alrededor de un 24% más de velocidad generando f64. Para el muestreo uniforme en rangos, urandom implementa el algoritmo de Lemire (2018) de multiplicación y rechazo con cálculo perezoso del umbral, lo que elimina la distinción entre distribuciones reutilizables y rangos únicos: ambas usan el mismo código no sesgado y, según el autor, son más rápidas que las dos rutas de rand.
El proyecto incluye una política de reproducibilidad como parte de su contrato público y publica los detalles completos de los benchmarks en su repositorio de GitHub.
