here_be_dragons/src/common/random.rs

29 lines
963 B
Rust
Raw Normal View History

2020-09-14 18:29:36 +00:00
//! Helper function for random number generator
//!
use rand::prelude::*;
/// Generate random number between start (inclusive) and end (exclusive).
2020-09-14 18:29:36 +00:00
pub fn random_range(rng: &mut StdRng, start: usize, end: usize) -> usize {
let max = (end - start) as u32;
2020-09-14 18:29:36 +00:00
((rng.next_u32() % max) + start as u32) as usize
}
/// ------------------------------------------------------------------------------------------------
/// Module unit tests
/// ------------------------------------------------------------------------------------------------
#[cfg(test)]
mod tests {
use std::time::{SystemTime, UNIX_EPOCH};
use rand::prelude::*;
use super::*;
#[test]
fn test_range() {
let system_time = SystemTime::now().duration_since(UNIX_EPOCH).expect("Can't access system time");
let mut rng = StdRng::seed_from_u64(system_time.as_millis() as u64);
let x = random_range(&mut rng, 5, 8);
assert!(x >= 5 && x < 8);
2020-09-14 18:29:36 +00:00
}
}