Skip to content

Commit a4ec8af

Browse files
committed
auto merge of #9810 : huonw/rust/rand3, r=alexcrichton
- Adds the `Sample` and `IndependentSample` traits for generating numbers where there are parameters (e.g. a list of elements to draw from, or the mean/variance of a normal distribution). The former takes `&mut self` and the latter takes `&self` (this is the only difference). - Adds proper `Normal` and `Exp`-onential distributions - Adds `Range` which generates `[lo, hi)` generically & properly (via a new trait) replacing the incorrect behaviour of `Rng.gen_integer_range` (this has become `Rng.gen_range` for convenience, it's far more efficient to use `Range` itself) - Move the `Weighted` struct from `std::rand` to `std::rand::distributions` & improve it - optimisations and docs
2 parents 5de50a3 + 0bba73c commit a4ec8af

File tree

14 files changed

+840
-247
lines changed

14 files changed

+840
-247
lines changed

src/libextra/base64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ mod test {
318318
use std::vec;
319319
320320
do 1000.times {
321-
let times = task_rng().gen_integer_range(1u, 100);
321+
let times = task_rng().gen_range(1u, 100);
322322
let v = vec::from_fn(times, |_| random::<u8>());
323323
assert_eq!(v.to_base64(STANDARD).from_base64().unwrap(), v);
324324
}

src/libextra/crypto/cryptoutil.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ pub mod test {
365365
digest.reset();
366366

367367
while count < total_size {
368-
let next: uint = rng.gen_integer_range(0, 2 * blocksize + 1);
368+
let next: uint = rng.gen_range(0, 2 * blocksize + 1);
369369
let remaining = total_size - count;
370370
let size = if next > remaining { remaining } else { next };
371371
digest.input(buffer.slice_to(size));

src/libextra/flate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ mod tests {
113113
let mut r = rand::rng();
114114
let mut words = ~[];
115115
do 20.times {
116-
let range = r.gen_integer_range(1u, 10);
116+
let range = r.gen_range(1u, 10);
117117
words.push(r.gen_vec::<u8>(range));
118118
}
119119
do 20.times {

src/libextra/sort.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,8 +1069,8 @@ mod big_tests {
10691069
isSorted(arr);
10701070

10711071
do 3.times {
1072-
let i1 = rng.gen_integer_range(0u, n);
1073-
let i2 = rng.gen_integer_range(0u, n);
1072+
let i1 = rng.gen_range(0u, n);
1073+
let i2 = rng.gen_range(0u, n);
10741074
arr.swap(i1, i2);
10751075
}
10761076
tim_sort(arr); // 3sort
@@ -1088,7 +1088,7 @@ mod big_tests {
10881088
isSorted(arr);
10891089

10901090
do (n/100).times {
1091-
let idx = rng.gen_integer_range(0u, n);
1091+
let idx = rng.gen_range(0u, n);
10921092
arr[idx] = rng.gen();
10931093
}
10941094
tim_sort(arr);
@@ -1141,8 +1141,8 @@ mod big_tests {
11411141
isSorted(arr);
11421142

11431143
do 3.times {
1144-
let i1 = rng.gen_integer_range(0u, n);
1145-
let i2 = rng.gen_integer_range(0u, n);
1144+
let i1 = rng.gen_range(0u, n);
1145+
let i2 = rng.gen_range(0u, n);
11461146
arr.swap(i1, i2);
11471147
}
11481148
tim_sort(arr); // 3sort
@@ -1160,7 +1160,7 @@ mod big_tests {
11601160
isSorted(arr);
11611161

11621162
do (n/100).times {
1163-
let idx = rng.gen_integer_range(0u, n);
1163+
let idx = rng.gen_range(0u, n);
11641164
arr[idx] = @rng.gen();
11651165
}
11661166
tim_sort(arr);

src/libextra/treemap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ mod test_treemap {
10281028
}
10291029

10301030
do 30.times {
1031-
let r = rng.gen_integer_range(0, ctrl.len());
1031+
let r = rng.gen_range(0, ctrl.len());
10321032
let (key, _) = ctrl.remove(r);
10331033
assert!(map.remove(&key));
10341034
check_structure(&map);

0 commit comments

Comments
 (0)