Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move gen_res53 to mersenne.rs
  • Loading branch information
coolreader18 committed Feb 4, 2020
commit a762bf89d97fab01b579ba41fa34969d7d38e6ae
11 changes: 1 addition & 10 deletions vm/src/stdlib/random.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ impl PyRandom {

#[pymethod]
fn random(&self) -> f64 {
gen_res53(&mut *self.rng.borrow_mut())
mersenne::gen_res53(&mut *self.rng.borrow_mut())
}

#[pymethod]
Expand Down Expand Up @@ -127,12 +127,3 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef {
"Random" => PyRandom::make_class(ctx),
})
}

// taken from the translated mersenne twister
/* generates a random number on [0,1) with 53-bit resolution*/
fn gen_res53<R: RngCore>(rng: &mut R) -> f64 {
let a = rng.next_u32() >> 5;
let b = rng.next_u32() >> 6;
(a as f64 * 67108864.0 + b as f64) * (1.0 / 9007199254740992.0)
}
/* These real versions are due to Isaku Wada, 2002/01/09 added */
8 changes: 8 additions & 0 deletions vm/src/stdlib/random/mersenne.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,14 @@ impl MT19937 {
}
}

/* generates a random number on [0,1) with 53-bit resolution*/
pub fn gen_res53<R: rand::RngCore>(rng: &mut R) -> f64 {
let a = rng.next_u32() >> 5;
let b = rng.next_u32() >> 6;
(a as f64 * 67108864.0 + b as f64) * (1.0 / 9007199254740992.0)
}
/* These real versions are due to Isaku Wada, 2002/01/09 added */

impl rand::RngCore for MT19937 {
fn next_u32(&mut self) -> u32 {
self.gen_u32()
Expand Down