use std::os;
-use rand::Rng;
-use rand;
+use rand::{task_rng, Rng};
use std::io;
use std::io::fs;
return TempDir::new_in(&abs_tmpdir, suffix);
}
- let mut r = rand::rng();
+ let mut r = task_rng();
for _ in range(0u, 1000) {
let p = tmpdir.join(r.gen_ascii_str(16) + suffix);
match fs::mkdir(&p, io::UserRWX) {
#[test]
fn test_flate_round_trip() {
- let mut r = rand::rng();
+ let mut r = rand::task_rng();
let mut words = ~[];
for _ in range(0, 20) {
let range = r.gen_range(1u, 10);
```rust
use rand::Rng;
-let mut rng = rand::rng();
+let mut rng = rand::task_rng();
if rng.gen() { // bool
println!("int: {}, uint: {}", rng.gen::<int>(), rng.gen::<uint>())
}
/// operation. If one does not require high performance generation of
/// random numbers, `task_rng` and/or `random` may be more
/// appropriate.
+#[deprecated="use `task_rng` or `StdRng::new`"]
pub fn rng() -> StdRng {
StdRng::new()
}
pub struct StdRng { priv rng: Isaac64Rng }
impl StdRng {
- /// Create a randomly seeded instance of `StdRng`. This reads
- /// randomness from the OS to seed the PRNG.
+ /// Create a randomly seeded instance of `StdRng`.
+ ///
+ /// This is a very expensive operation as it has to read
+ /// randomness from the operating system and use this in an
+ /// expensive seeding operation. If one is only generating a small
+ /// number of random numbers, or doesn't need the utmost speed for
+ /// generating each number, `task_rng` and/or `random` may be more
+ /// appropriate.
#[cfg(not(target_word_size="64"))]
pub fn new() -> StdRng {
StdRng { rng: IsaacRng::new() }
}
- /// Create a randomly seeded instance of `StdRng`. This reads
- /// randomness from the OS to seed the PRNG.
+ /// Create a randomly seeded instance of `StdRng`.
+ ///
+ /// This is a very expensive operation as it has to read
+ /// randomness from the operating system and use this in an
+ /// expensive seeding operation. If one is only generating a small
+ /// number of random numbers, or doesn't need the utmost speed for
+ /// generating each number, `task_rng` and/or `random` may be more
+ /// appropriate.
#[cfg(target_word_size="64")]
pub fn new() -> StdRng {
StdRng { rng: Isaac64Rng::new() }
}
fn make_rand_name() -> ~str {
- let mut rng = rand::rng();
+ let mut rng = rand::task_rng();
let n = ~"TEST" + rng.gen_ascii_str(10u);
assert!(getenv(n).is_none());
n
// following: debug version. Could work in final except that it's incompatible with
// good error messages and uses of struct names in ambiguous could-be-binding
// locations. Also definitely destroys the guarantee given above about ptr_eq.
- /*let num = rand::rng().gen_uint_range(0,0xffff);
+ /*let num = rand::task_rng().gen_uint_range(0,0xffff);
gensym(format!("{}_{}",ident_to_str(src),num))*/
}
#[test]
fn test_rand_rand() {
- let mut rng = rand::rng();
+ let mut rng = rand::task_rng();
let u: ~Uuid = rand::Rand::rand(&mut rng);
let ub = u.as_bytes();
}
fn vec_plus() {
- let mut r = rand::rng();
+ let mut r = rand::task_rng();
let mut v = ~[];
let mut i = 0;
}
fn vec_append() {
- let mut r = rand::rng();
+ let mut r = rand::task_rng();
let mut v = ~[];
let mut i = 0;
}
fn vec_push_all() {
- let mut r = rand::rng();
+ let mut r = rand::task_rng();
let mut v = ~[];
for i in range(0u, 1500) {
calllink08,
calllink10
];
- let mut rng = rand::rng();
+ let mut rng = rand::task_rng();
for f in fns.iter() {
let f = *f;
let sz = rng.gen::<u32>() % 256u32 + 256u32;