cs_utils/utils/
random_number.rs

1use rand::distributions::uniform::{SampleRange, SampleUniform};
2use rand::{thread_rng, Rng};
3
4/// Generate a random number in `(min, max]` range.
5/// 
6/// ## Arguments
7/// 
8/// * `range` - `(min..max)` (or `(min..=max)`) range of numbers
9/// 
10/// ## Examples
11/// 
12/// ### Inclusive range
13/// ```
14/// let number = cs_utils::random_number(3..=9);
15/// 
16/// assert!(number >= 3);
17/// assert!(number <= 9);
18/// ```
19/// 
20/// ### Non-inclusive range
21/// ```
22/// let number = cs_utils::random_number(1..5);
23/// 
24/// assert!(number >= 1);
25/// assert!(number < 5);
26/// ```
27/// 
28pub fn random_number<T, R>(range: R) -> T where T: SampleUniform, R: SampleRange<T> {
29    let mut rng = thread_rng();
30    let result: T = rng.gen_range(range);
31
32    return result;
33}