Skip to content

Remove weak_rng #20773

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
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
6 changes: 3 additions & 3 deletions src/libcollections/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

use prelude::*;
use std::rand;
use std::rand::Rng;
use std::rand::{Rng, XorShiftRng};
use test::{Bencher, black_box};

pub fn insert_rand_n<M, I, R>(n: uint,
Expand All @@ -22,7 +22,7 @@ pub fn insert_rand_n<M, I, R>(n: uint,
R: FnMut(&mut M, uint),
{
// setup
let mut rng = rand::weak_rng();
let mut rng: XorShiftRng = rand::random();

for _ in range(0, n) {
insert(map, rng.gen::<uint>() % n);
Expand Down Expand Up @@ -69,7 +69,7 @@ pub fn find_rand_n<M, T, I, F>(n: uint,
F: FnMut(&M, uint) -> T,
{
// setup
let mut rng = rand::weak_rng();
let mut rng: XorShiftRng = rand::random();
let mut keys = range(0, n).map(|_| rng.gen::<uint>() % n)
.collect::<Vec<_>>();

Expand Down
4 changes: 2 additions & 2 deletions src/libcollections/btree/map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1827,7 +1827,7 @@ mod test {
#[cfg(test)]
mod bench {
use prelude::*;
use std::rand::{weak_rng, Rng};
use std::rand::{random, XorShiftRng, Rng};
use test::{Bencher, black_box};

use super::BTreeMap;
Expand Down Expand Up @@ -1902,7 +1902,7 @@ mod bench {

fn bench_iter(b: &mut Bencher, size: uint) {
let mut map = BTreeMap::<uint, uint>::new();
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();

for _ in range(0, size) {
map.insert(rng.gen(), rng.gen());
Expand Down
18 changes: 9 additions & 9 deletions src/libcollections/slice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2728,7 +2728,7 @@ mod bench {
use core::mem;
use core::ptr;
use core::iter::repeat;
use std::rand::{weak_rng, Rng};
use std::rand::{random, XorShiftRng, Rng};
use test::{Bencher, black_box};

#[bench]
Expand Down Expand Up @@ -2896,7 +2896,7 @@ mod bench {

#[bench]
fn random_inserts(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = repeat((0u, 0u)).take(30).collect::<Vec<_>>();
for _ in range(0u, 100) {
Expand All @@ -2908,7 +2908,7 @@ mod bench {
}
#[bench]
fn random_removes(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = repeat((0u, 0u)).take(130).collect::<Vec<_>>();
for _ in range(0u, 100) {
Expand All @@ -2920,7 +2920,7 @@ mod bench {

#[bench]
fn sort_random_small(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = rng.gen_iter::<u64>().take(5).collect::<Vec<u64>>();
v.as_mut_slice().sort();
Expand All @@ -2930,7 +2930,7 @@ mod bench {

#[bench]
fn sort_random_medium(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = rng.gen_iter::<u64>().take(100).collect::<Vec<u64>>();
v.as_mut_slice().sort();
Expand All @@ -2940,7 +2940,7 @@ mod bench {

#[bench]
fn sort_random_large(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = rng.gen_iter::<u64>().take(10000).collect::<Vec<u64>>();
v.as_mut_slice().sort();
Expand All @@ -2961,7 +2961,7 @@ mod bench {

#[bench]
fn sort_big_random_small(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = rng.gen_iter::<BigSortable>().take(5)
.collect::<Vec<BigSortable>>();
Expand All @@ -2972,7 +2972,7 @@ mod bench {

#[bench]
fn sort_big_random_medium(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = rng.gen_iter::<BigSortable>().take(100)
.collect::<Vec<BigSortable>>();
Expand All @@ -2983,7 +2983,7 @@ mod bench {

#[bench]
fn sort_big_random_large(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| {
let mut v = rng.gen_iter::<BigSortable>().take(10000)
.collect::<Vec<BigSortable>>();
Expand Down
27 changes: 14 additions & 13 deletions src/libcoretest/fmt/num.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,85 +169,86 @@ fn test_radix_base_too_large() {
mod u32 {
use test::Bencher;
use core::fmt::radix;
use std::rand::{weak_rng, Rng};
use std::rand::{random, XorShiftRng, Rng};
use std::io::util::NullWriter;

#[bench]
fn format_bin(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:b}", rng.gen::<u32>()) })
}

#[bench]
fn format_oct(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:o}", rng.gen::<u32>()) })
}

#[bench]
fn format_dec(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{}", rng.gen::<u32>()) })
}

#[bench]
fn format_hex(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:x}", rng.gen::<u32>()) })
}

#[bench]
fn format_show(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:?}", rng.gen::<u32>()) })
}

#[bench]
fn format_base_36(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{}", radix(rng.gen::<u32>(), 36)) })
}
}

mod i32 {
use test::Bencher;
use core::fmt::radix;
use std::rand::{weak_rng, Rng};
use std::rand::{random, XorShiftRng, Rng};
use std::io::util::NullWriter;

#[bench]
fn format_bin(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:b}", rng.gen::<i32>()) })
}

#[bench]
fn format_oct(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:o}", rng.gen::<i32>()) })
}

#[bench]
fn format_dec(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{}", rng.gen::<i32>()) })
}

#[bench]
fn format_hex(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:x}", rng.gen::<i32>()) })
}

#[bench]
fn format_show(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{:?}", rng.gen::<i32>()) })
}

#[bench]
fn format_base_36(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { write!(&mut NullWriter, "{}", radix(rng.gen::<i32>(), 36)) })
}
}
2 changes: 1 addition & 1 deletion src/librand/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,6 @@ mod test {
}

pub fn weak_rng() -> MyRng<rand::XorShiftRng> {
MyRng { inner: rand::weak_rng() }
MyRng { inner: rand::random() }
}
}
4 changes: 2 additions & 2 deletions src/libstd/collections/hash/map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1603,7 +1603,7 @@ mod test_map {
use super::Entry::{Occupied, Vacant};
use iter::{range_inclusive, range_step_inclusive, repeat};
use cell::RefCell;
use rand::{weak_rng, Rng};
use rand::{random, XorShiftRng, Rng};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It may be better to change these to XorShiftRng.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As these are used for tests and XorShiftRng needs to be seeded manually now, I think preserved noise-to-signal ratio is much more valuable than those few µs we’d save by not using thread_rng.

strconv benchmarks are another story, though. Will update these tomorrow.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can get a randomly seeded one with rand::random::<XorShiftRng>(), btw.


#[test]
fn test_create_capacity_zero() {
Expand Down Expand Up @@ -2261,7 +2261,7 @@ mod test_map {
}

let mut m = HashMap::new();
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();

// Populate the map with some items.
for _ in range(0u, 50) {
Expand Down
28 changes: 14 additions & 14 deletions src/libstd/num/strconv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@ mod bench {

mod uint {
use super::test::Bencher;
use rand::{weak_rng, Rng};
use rand::{random, XorShiftRng, Rng};
use std::fmt;

#[inline]
Expand All @@ -473,38 +473,38 @@ mod bench {

#[bench]
fn to_str_bin(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<uint>(), 2); })
}

#[bench]
fn to_str_oct(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<uint>(), 8); })
}

#[bench]
fn to_str_dec(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<uint>(), 10); })
}

#[bench]
fn to_str_hex(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<uint>(), 16); })
}

#[bench]
fn to_str_base_36(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<uint>(), 36); })
}
}

mod int {
use super::test::Bencher;
use rand::{weak_rng, Rng};
use rand::{random, XorShiftRng, Rng};
use std::fmt;

#[inline]
Expand All @@ -514,43 +514,43 @@ mod bench {

#[bench]
fn to_str_bin(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<int>(), 2); })
}

#[bench]
fn to_str_oct(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<int>(), 8); })
}

#[bench]
fn to_str_dec(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<int>(), 10); })
}

#[bench]
fn to_str_hex(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<int>(), 16); })
}

#[bench]
fn to_str_base_36(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { to_string(rng.gen::<int>(), 36); })
}
}

mod f64 {
use super::test::Bencher;
use rand::{weak_rng, Rng};
use rand::{random, XorShiftRng, Rng};
use f64;

#[bench]
fn float_to_string(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
b.iter(|| { f64::to_string(rng.gen()); })
}
}
Expand Down
20 changes: 2 additions & 18 deletions src/libstd/rand/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,22 +291,6 @@ impl<'a> SeedableRng<&'a [uint]> for StdRng {
}
}

/// Create a weak random number generator with a default algorithm and seed.
///
/// It returns the fastest `Rng` algorithm currently available in Rust without
/// consideration for cryptography or security. If you require a specifically
/// seeded `Rng` for consistency over time you should pick one algorithm and
/// create the `Rng` yourself.
///
/// This will read randomness from the operating system to seed the
/// generator.
pub fn weak_rng() -> XorShiftRng {
match OsRng::new() {
Ok(mut r) => r.gen(),
Err(e) => panic!("weak_rng: failed to create seeded RNG: {:?}", e)
}
}

/// Controls how the thread-local RNG is reseeded.
struct ThreadRngReseeder;

Expand Down Expand Up @@ -645,7 +629,7 @@ mod bench {

use self::test::Bencher;
use super::{XorShiftRng, StdRng, IsaacRng, Isaac64Rng, Rng, RAND_BENCH_N};
use super::{OsRng, weak_rng};
use super::{OsRng, random};
use mem::size_of;

#[bench]
Expand Down Expand Up @@ -694,7 +678,7 @@ mod bench {

#[bench]
fn rand_shuffle_100(b: &mut Bencher) {
let mut rng = weak_rng();
let mut rng: XorShiftRng = random();
let x : &mut[uint] = &mut [1; 100];
b.iter(|| {
rng.shuffle(x);
Expand Down