1234567891011121314151617181920212223242526272829303132 |
- use std::fs::File;
- use std::io::BufReader;
- use std::io::Read;
- // ┏━┓┏━┓┏┓╻╺┳┓┏━┓┏┳┓ ┏┓╻╻ ╻┏┳┓┏┓ ┏━╸┏━┓ ┏━╸┏━╸┏┓╻┏━╸┏━┓┏━┓╺┳╸╻┏━┓┏┓╻
- // ┣┳┛┣━┫┃┗┫ ┃┃┃ ┃┃┃┃ ┃┗┫┃ ┃┃┃┃┣┻┓┣╸ ┣┳┛ ┃╺┓┣╸ ┃┗┫┣╸ ┣┳┛┣━┫ ┃ ┃┃ ┃┃┗┫
- // ╹┗╸╹ ╹╹ ╹╺┻┛┗━┛╹ ╹ ╹ ╹┗━┛╹ ╹┗━┛┗━╸╹┗╸ ┗━┛┗━╸╹ ╹┗━╸╹┗╸╹ ╹ ╹ ╹┗━┛╹ ╹
- pub struct RNG {
- random_device: BufReader<File>,
- }
- impl RNG {
- pub fn next_float(&mut self) -> f32 {
- let mut buf: [u8; 4] = [0, 0, 0, 0];
- self.random_device
- .read(&mut buf)
- .expect("Read from /dev/random failed");
- let val: f32 = u32::from_be_bytes(buf) as f32;
- f32::from(val) / (u32::max_value() as f32 + 1.0)
- }
- pub fn create() -> RNG {
- let f = File::open("/dev/urandom").expect("Did not find source of randomness");
- let reader: BufReader<File> = BufReader::new(f);
- return RNG {
- random_device: reader,
- };
- }
- }
|