use rand_mt::Mt;
pub trait RngExt {
fn uniform_int(&mut self, a: usize, b: usize) -> usize;
fn flip(&mut self) -> bool;
}
impl RngExt for Mt {
fn uniform_int(&mut self, a: usize, b: usize) -> usize {
let val = self.next_u32();
let real = (val as f64) / 4294967296.0; a + (real * ((b - a + 1) as f64)) as usize
}
fn flip(&mut self) -> bool {
self.next_u32() & 1 == 0
}
}