use rand::Rng;
#[inline]
pub fn random_u16() -> u16 {
rand::thread_rng().gen()
}
#[inline]
pub fn random_u32() -> u32 {
rand::thread_rng().gen()
}
#[inline]
pub fn random_u64() -> u64 {
rand::thread_rng().gen()
}
#[cfg(test)]
mod tests {
use super::*;
use std::collections::HashSet;
#[test]
fn test_random_u16_distribution() {
let values: HashSet<u16> = (0..100).map(|_| random_u16()).collect();
assert!(values.len() >= 90);
}
#[test]
fn test_random_u32_distribution() {
let values: HashSet<u32> = (0..100).map(|_| random_u32()).collect();
assert_eq!(values.len(), 100);
}
#[test]
fn test_random_u64_distribution() {
let values: HashSet<u64> = (0..100).map(|_| random_u64()).collect();
assert_eq!(values.len(), 100);
}
}