1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#![allow(unused)]
#![deny(missing_docs)]

//! Random Functions
//! 
//! Some common functions when working with random numbers.

extern crate rand;

use rand::Rng;

/// Returns a random number between 0 and 1
pub fn random() -> f64 {
    rand::thread_rng().gen()
}

/// Returns a random number in the range [0, max)
pub fn randint(max: usize) -> usize {
    ((max as f64) * random()) as usize
}

/// Returns a random number in the range [start, end)
pub fn rex(start: usize, end: usize) -> usize {
    start + randint(end - start)
}


#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn it_works() {
        println!("{}", random());
        println!("{}", randint(10));
        println!("{}", rex(5, 10));
    }
}