use ggstd::math::rand;
fn main() {
println!("{:08x}", ggstd::runtime::fastrand());
println!("{:08x}", ggstd::runtime::fastrand());
println!("{:16x}", ggstd::runtime::fastrand64());
println!("{:16x}", ggstd::runtime::fastrand64());
println!("{:x}", ggstd::runtime::fastrandu());
println!("{:x}", ggstd::runtime::fastrandu());
println!("{}", ggstd::runtime::fastrandn(100));
println!("{}", ggstd::runtime::fastrandn(100));
println!();
{
use std::time::Instant;
let count = 10_000_000;
{
let start_time = Instant::now();
for _ in 0..count {
ggstd::runtime::fastrandn(1_000_000_000);
}
let elapsed = Instant::now().duration_since(start_time);
println!("fastrand: {:6} ms", elapsed.as_millis());
}
{
let start_time = Instant::now();
for _ in 0..count {
rand::int31n(1_000_000_000);
}
let elapsed = Instant::now().duration_since(start_time);
println!("math::rand global: {:6} ms", elapsed.as_millis());
}
{
let start_time = Instant::now();
let mut r = rand::Rand::new(rand::new_source(123));
for _ in 0..count {
r.int31n(1_000_000_000);
}
let elapsed = Instant::now().duration_since(start_time);
println!("math::rand::Rand: {:6} ms", elapsed.as_millis());
}
}
}