use std::ops::Range;
use compact_reltime::{Reltime, Units};
use rand::distr::{Distribution, Uniform};
use rand::random;
const DISTRS: [Range<u64>; 7] = [
0..90,
90..(90 * Units::Minutes as u64),
(90 * Units::Minutes as u64)..(72 * Units::Hours as u64),
(72 * Units::Hours as u64)..(10 * Units::Days as u64),
(10 * Units::Days as u64)..(8 * Units::Weeks as u64),
(8 * Units::Weeks as u64)..(18 * Units::Months as u64),
(18 * Units::Months as u64)..(10 * Units::Years as u64),
];
fn main() {
let mut rng = rand::rng();
for _ in 0..100 {
let idx: usize = (random::<u64>() % 7) as usize;
let distr = Uniform::try_from(DISTRS[idx].clone()).unwrap();
let seconds = distr.sample(&mut rng);
let duration = Reltime::new(seconds).expect("too long");
println!("{:10} {}", duration.seconds(), duration);
}
}