Skip to content

Commit b418b61

Browse files
authored
Merge pull request #395 from vks/uniform
Rename "range" to "uniform"
2 parents aec044d + 5bb3eb8 commit b418b61

File tree

7 files changed

+201
-161
lines changed

7 files changed

+201
-161
lines changed

benches/distributions.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -70,31 +70,31 @@ macro_rules! distr {
7070
}
7171
}
7272

73-
// range
74-
distr_int!(distr_range_i8, i8, Range::new(20i8, 100));
75-
distr_int!(distr_range_i16, i16, Range::new(-500i16, 2000));
76-
distr_int!(distr_range_i32, i32, Range::new(-200_000_000i32, 800_000_000));
77-
distr_int!(distr_range_i64, i64, Range::new(3i64, 123_456_789_123));
73+
// uniform
74+
distr_int!(distr_uniform_i8, i8, Uniform::new(20i8, 100));
75+
distr_int!(distr_uniform_i16, i16, Uniform::new(-500i16, 2000));
76+
distr_int!(distr_uniform_i32, i32, Uniform::new(-200_000_000i32, 800_000_000));
77+
distr_int!(distr_uniform_i64, i64, Uniform::new(3i64, 123_456_789_123));
7878
#[cfg(feature = "i128_support")]
79-
distr_int!(distr_range_i128, i128, Range::new(-123_456_789_123i128, 123_456_789_123_456_789));
79+
distr_int!(distr_uniform_i128, i128, Uniform::new(-123_456_789_123i128, 123_456_789_123_456_789));
8080

81-
distr_float!(distr_range_f32, f32, Range::new(2.26f32, 2.319));
82-
distr_float!(distr_range_f64, f64, Range::new(2.26f64, 2.319));
81+
distr_float!(distr_uniform_f32, f32, Uniform::new(2.26f32, 2.319));
82+
distr_float!(distr_uniform_f64, f64, Uniform::new(2.26f64, 2.319));
8383

84-
// uniform
85-
distr_int!(distr_uniform_i8, i8, Standard);
86-
distr_int!(distr_uniform_i16, i16, Standard);
87-
distr_int!(distr_uniform_i32, i32, Standard);
88-
distr_int!(distr_uniform_i64, i64, Standard);
84+
// standard
85+
distr_int!(distr_standard_i8, i8, Standard);
86+
distr_int!(distr_standard_i16, i16, Standard);
87+
distr_int!(distr_standard_i32, i32, Standard);
88+
distr_int!(distr_standard_i64, i64, Standard);
8989
#[cfg(feature = "i128_support")]
90-
distr_int!(distr_uniform_i128, i128, Standard);
90+
distr_int!(distr_standard_i128, i128, Standard);
9191

92-
distr!(distr_uniform_bool, bool, Standard);
93-
distr!(distr_uniform_alphanumeric, char, Alphanumeric);
94-
distr!(distr_uniform_codepoint, char, Standard);
92+
distr!(distr_standard_bool, bool, Standard);
93+
distr!(distr_standard_alphanumeric, char, Alphanumeric);
94+
distr!(distr_standard_codepoint, char, Standard);
9595

96-
distr_float!(distr_uniform_f32, f32, Standard);
97-
distr_float!(distr_uniform_f64, f64, Standard);
96+
distr_float!(distr_standard_f32, f32, Standard);
97+
distr_float!(distr_standard_f64, f64, Standard);
9898

9999
// distributions
100100
distr_float!(distr_exp, f64, Exp::new(1.23 * 4.56));

examples/monte-carlo.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030

3131
extern crate rand;
3232

33-
use rand::distributions::{Distribution, Range};
33+
use rand::distributions::{Distribution, Uniform};
3434

3535
fn main() {
36-
let range = Range::new(-1.0f64, 1.0);
36+
let range = Uniform::new(-1.0f64, 1.0);
3737
let mut rng = rand::thread_rng();
3838

3939
let total = 1_000_000;

examples/monty-hall.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@
3333
extern crate rand;
3434

3535
use rand::Rng;
36-
use rand::distributions::{Distribution, Range};
36+
use rand::distributions::{Distribution, Uniform};
3737

3838
struct SimulationResult {
3939
win: bool,
4040
switch: bool,
4141
}
4242

4343
// Run a single simulation of the Monty Hall problem.
44-
fn simulate<R: Rng>(random_door: &Range<u32>, rng: &mut R)
44+
fn simulate<R: Rng>(random_door: &Uniform<u32>, rng: &mut R)
4545
-> SimulationResult {
4646
let car = random_door.sample(rng);
4747

@@ -82,7 +82,7 @@ fn main() {
8282
let num_simulations = 10000;
8383

8484
let mut rng = rand::thread_rng();
85-
let random_door = Range::new(0u32, 3);
85+
let random_door = Uniform::new(0u32, 3);
8686

8787
let (mut switch_wins, mut switch_losses) = (0, 0);
8888
let (mut keep_wins, mut keep_losses) = (0, 0);

src/distributions/mod.rs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,22 @@
1313
//! Distributions are stateless (i.e. immutable) objects controlling the
1414
//! production of values of some type `T` from a presumed uniform randomness
1515
//! source. These objects may have internal parameters set at contruction time
16-
//! (e.g. [`Range`], which has configurable bounds) or may have no internal
16+
//! (e.g. [`Uniform`], which has configurable bounds) or may have no internal
1717
//! parameters (e.g. [`Standard`]).
1818
//!
1919
//! All distributions support the [`Distribution`] trait, and support usage
2020
//! via `distr.sample(&mut rng)` as well as via `rng.sample(distr)`.
2121
//!
2222
//! [`Distribution`]: trait.Distribution.html
23-
//! [`Range`]: range/struct.Range.html
23+
//! [`Uniform`]: uniform/struct.Uniform.html
2424
//! [`Standard`]: struct.Standard.html
2525
2626
use Rng;
2727

2828
pub use self::other::Alphanumeric;
29-
pub use self::range::Range;
29+
pub use self::uniform::Uniform;
30+
#[deprecated(since="0.5.0", note="use Uniform instead")]
31+
pub use self::uniform::Uniform as Range;
3032
#[cfg(feature="std")]
3133
pub use self::gamma::{Gamma, ChiSquared, FisherF, StudentT};
3234
#[cfg(feature="std")]
@@ -38,7 +40,7 @@ pub use self::poisson::Poisson;
3840
#[cfg(feature = "std")]
3941
pub use self::binomial::Binomial;
4042

41-
pub mod range;
43+
pub mod uniform;
4244
#[cfg(feature="std")]
4345
pub mod gamma;
4446
#[cfg(feature="std")]
@@ -80,6 +82,13 @@ pub trait IndependentSample<Support>: Sample<Support> {
8082
fn ind_sample<R: Rng>(&self, &mut R) -> Support;
8183
}
8284

85+
/// DEPRECATED: Use `distributions::uniform` instead.
86+
#[deprecated(since="0.5.0", note="use uniform instead")]
87+
pub mod range {
88+
pub use distributions::uniform::Uniform as Range;
89+
pub use distributions::uniform::SampleUniform as SampleRange;
90+
}
91+
8392
#[allow(deprecated)]
8493
mod impls {
8594
use Rng;
@@ -152,7 +161,7 @@ pub trait Distribution<T> {
152161
///
153162
/// ```rust
154163
/// use rand::thread_rng;
155-
/// use rand::distributions::{Distribution, Alphanumeric, Range, Standard};
164+
/// use rand::distributions::{Distribution, Alphanumeric, Uniform, Standard};
156165
///
157166
/// let mut rng = thread_rng();
158167
///
@@ -163,7 +172,7 @@ pub trait Distribution<T> {
163172
/// let s: String = Alphanumeric.sample_iter(&mut rng).take(7).collect();
164173
///
165174
/// // Dice-rolling:
166-
/// let die_range = Range::new_inclusive(1, 6);
175+
/// let die_range = Uniform::new_inclusive(1, 6);
167176
/// let mut roll_die = die_range.sample_iter(&mut rng);
168177
/// while roll_die.next().unwrap() != 6 {
169178
/// println!("Not a 6; rolling again!");
@@ -343,7 +352,7 @@ pub struct Weighted<T> {
343352
#[derive(Debug)]
344353
pub struct WeightedChoice<'a, T:'a> {
345354
items: &'a mut [Weighted<T>],
346-
weight_range: Range<u32>,
355+
weight_range: Uniform<u32>,
347356
}
348357

349358
impl<'a, T: Clone> WeightedChoice<'a, T> {
@@ -378,7 +387,7 @@ impl<'a, T: Clone> WeightedChoice<'a, T> {
378387
items,
379388
// we're likely to be generating numbers in this range
380389
// relatively often, so might as well cache it
381-
weight_range: Range::new(0, running_total)
390+
weight_range: Uniform::new(0, running_total)
382391
}
383392
}
384393
}
@@ -499,7 +508,7 @@ mod tests {
499508
fn test_weighted_choice() {
500509
// this makes assumptions about the internal implementation of
501510
// WeightedChoice. It may fail when the implementation in
502-
// `distributions::range::RangeInt changes.
511+
// `distributions::uniform::UniformInt` changes.
503512

504513
macro_rules! t {
505514
($items:expr, $expected:expr) => {{
@@ -511,7 +520,7 @@ mod tests {
511520
let expected = $expected;
512521

513522
// Use extremely large steps between the random numbers, because
514-
// we test with small ranges and RangeInt is designed to prefer
523+
// we test with small ranges and `UniformInt` is designed to prefer
515524
// the most significant bits.
516525
let mut rng = StepRng::new(0, !0 / (total_weight as u64));
517526

src/distributions/other.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
use core::char;
1414

1515
use {Rng};
16-
use distributions::{Distribution, Standard, Range};
16+
use distributions::{Distribution, Standard, Uniform};
1717

1818
// ----- Sampling distributions -----
1919

@@ -43,7 +43,7 @@ pub struct Alphanumeric;
4343
impl Distribution<char> for Standard {
4444
#[inline]
4545
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> char {
46-
let range = Range::new(0u32, 0x11_0000);
46+
let range = Uniform::new(0u32, 0x11_0000);
4747
loop {
4848
match char::from_u32(range.sample(rng)) {
4949
Some(c) => return c,
@@ -63,7 +63,7 @@ impl Distribution<char> for Alphanumeric {
6363
abcdefghijklmnopqrstuvwxyz\
6464
0123456789";
6565
// We can pick from 62 characters. This is so close to a power of 2, 64,
66-
// that we can do better than `Range`. Use a simple bitshift and
66+
// that we can do better than `Uniform`. Use a simple bitshift and
6767
// rejection sampling. We do not use a bitmask, because for small RNGs
6868
// the most significant bits are usually of higher quality.
6969
loop {

0 commit comments

Comments
 (0)