Skip to content

Commit 31087b3

Browse files
authored
Merge pull request #369 from pitdicker/rename_uniform
Rename uniform
2 parents 3019479 + 3c1c9ad commit 31087b3

16 files changed

+114
-113
lines changed

CHANGELOG.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,16 @@ You may also find the [Update Guide](UPDATING.md) useful.
8080
### Distributions
8181
- New `Distribution` trait. (#256)
8282
- Deprecate `Rand`, `Sample` and `IndependentSample` traits. (#256)
83-
- Add a `Uniform` distribution (replaces most `Rand` implementations). (#256)
83+
- Add a `Standard` distribution (replaces most `Rand` implementations). (#256)
8484
- Add `Binomial` and `Poisson` distributions. (#96)
8585
- Add `Alphanumeric` distribution. (#279)
86-
- Remove `Open01` and `Closed01` distributions, use `Uniform` instead (open distribution). (#274)
86+
- Remove `Open01` and `Closed01` distributions, use `Standard` instead (open distribution). (#274)
8787
- Rework `Range` type, making it possible to implement it for user types. (#274)
8888
- Add `Range::new_inclusive` for inclusive ranges. (#274)
8989
- Add `Range::sample_single` to allow for optimized implementations. (#274)
9090
- Use widening multiply method for much faster integer range reduction. (#274)
91-
- `Uniform` distributions for `bool` uses `Range`. (#274)
92-
- `Uniform` distributions for `bool` uses sign test. (#274)
91+
- `Standard` distributions for `bool` uses `Range`. (#274)
92+
- `Standard` distributions for `bool` uses sign test. (#274)
9393

9494

9595
## [0.4.2] - 2018-01-06

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ The `rand` crate provides:
8484
- pseudo-random number generators: `StdRng`, `SmallRng`, `prng` module
8585
- convenient, auto-seeded crypto-grade thread-local generator: `thread_rng`
8686
- `distributions` producing many different types of random values:
87-
- `Uniform`-ly distributed integers and floats of many types
87+
- a `Standard` distribution for integers, floats,and derived types
88+
including tuples, arrays and `Option`
8889
- unbiased sampling from specified `Range`s
8990
- sampling from exponential/normal/gamma distributions
9091
- sampling from binomial/poisson distributions

UPDATING.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,8 @@ cryptographic generator, used by `StdRng` and `thread_rng()`.
198198
### Helper functions/traits
199199

200200
The `Rand` trait has been deprecated. Instead, users are encouraged to use
201-
`Uniform` which is a real distribution and supports the same sampling as `Rand`.
202-
`Rng::gen()` now uses `Uniform` and should work exactly as before.
201+
`Standard` which is a real distribution and supports the same sampling as
202+
`Rand`.`Rng::gen()` now uses `Standard` and should work exactly as before.
203203

204204
The `random()` function has been removed; users may simply use
205205
`thread_rng().gen()` instead or may choose to cache
@@ -221,18 +221,18 @@ removed in a future release.
221221
`Distribution::sample` (as well as several other functions) can now be called
222222
directly on type-erased (unsized) RNGs.
223223

224-
`RandSample` has been removed (see `Rand` deprecation and new `Uniform`
224+
`RandSample` has been removed (see `Rand` deprecation and new `Standard`
225225
distribution).
226226

227227
The `Open01` and `Closed01` wrappers have been removed. `Rng::gen()` (via
228-
`Uniform`) now yields samples from `(0, 1)` for floats; i.e. the same as the old
229-
`Open01`. This is considered sufficient for most uses.
228+
`Standard`) now yields samples from `(0, 1)` for floats; i.e. the same as the
229+
old `Open01`. This is considered sufficient for most uses.
230230

231231
#### Uniform distributions
232232

233233
Two new distributions are available:
234234

235-
- `Uniform` produces uniformly-distributed samples for many different types,
235+
- `Standard` produces uniformly-distributed samples for many different types,
236236
and acts as a replacement for `Rand`
237237
- `Alphanumeric` samples `char`s from the ranges `a-z A-Z 0-9`
238238

benches/distributions.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,19 @@ distr_float!(distr_range_f32, f32, Range::new(2.26f32, 2.319));
8282
distr_float!(distr_range_f64, f64, Range::new(2.26f64, 2.319));
8383

8484
// uniform
85-
distr_int!(distr_uniform_i8, i8, Uniform);
86-
distr_int!(distr_uniform_i16, i16, Uniform);
87-
distr_int!(distr_uniform_i32, i32, Uniform);
88-
distr_int!(distr_uniform_i64, i64, 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);
8989
#[cfg(feature = "i128_support")]
90-
distr_int!(distr_uniform_i128, i128, Uniform);
90+
distr_int!(distr_uniform_i128, i128, Standard);
9191

92-
distr!(distr_uniform_bool, bool, Uniform);
92+
distr!(distr_uniform_bool, bool, Standard);
9393
distr!(distr_uniform_alphanumeric, char, Alphanumeric);
94-
distr!(distr_uniform_codepoint, char, Uniform);
94+
distr!(distr_uniform_codepoint, char, Standard);
9595

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

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

benches/misc.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,10 @@ fn gen_1k_gen_iter(b: &mut Bencher) {
113113

114114
#[bench]
115115
fn gen_1k_sample_iter(b: &mut Bencher) {
116-
use rand::distributions::{Distribution, Uniform};
116+
use rand::distributions::{Distribution, Standard};
117117
let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
118118
b.iter(|| {
119-
let v: Vec<u64> = Uniform.sample_iter(&mut rng).take(128).collect();
119+
let v: Vec<u64> = Standard.sample_iter(&mut rng).take(128).collect();
120120
black_box(v);
121121
});
122122
b.bytes = 1024;

src/distributions/float.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
1313
use core::mem;
1414
use Rng;
15-
use distributions::{Distribution, Uniform};
15+
use distributions::{Distribution, Standard};
1616

1717
pub(crate) trait IntoFloat {
1818
type F;
@@ -42,7 +42,7 @@ macro_rules! float_impls {
4242
}
4343
}
4444

45-
impl Distribution<$ty> for Uniform {
45+
impl Distribution<$ty> for Standard {
4646
/// Generate a floating point number in the open interval `(0, 1)`
4747
/// (not including either endpoint) with a uniform distribution.
4848
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> $ty {

src/distributions/gamma.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
use self::GammaRepr::*;
1414
use self::ChiSquaredRepr::*;
1515

16-
use {Rng};
16+
use Rng;
1717
use distributions::normal::StandardNormal;
18-
use distributions::{Distribution, Exp, Uniform};
18+
use distributions::{Distribution, Exp};
1919

2020
/// The Gamma distribution `Gamma(shape, scale)` distribution.
2121
///
@@ -142,7 +142,7 @@ impl Distribution<f64> for Gamma {
142142
}
143143
impl Distribution<f64> for GammaSmallShape {
144144
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> f64 {
145-
let u: f64 = rng.sample(Uniform);
145+
let u: f64 = rng.gen();
146146

147147
self.large_shape.sample(rng) * u.powf(self.inv_shape)
148148
}
@@ -157,7 +157,7 @@ impl Distribution<f64> for GammaLargeShape {
157157
}
158158

159159
let v = v_cbrt * v_cbrt * v_cbrt;
160-
let u: f64 = rng.sample(Uniform);
160+
let u: f64 = rng.gen();
161161

162162
let x_sqr = x * x;
163163
if u < 1.0 - 0.0331 * x_sqr * x_sqr ||

src/distributions/integer.rs

+27-27
Original file line numberDiff line numberDiff line change
@@ -8,55 +8,55 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
//! The implementations of the `Uniform` distribution for integer types.
11+
//! The implementations of the `Standard` distribution for integer types.
1212
1313
use {Rng};
14-
use distributions::{Distribution, Uniform};
14+
use distributions::{Distribution, Standard};
1515

16-
impl Distribution<isize> for Uniform {
16+
impl Distribution<isize> for Standard {
1717
#[inline]
1818
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> isize {
1919
rng.gen::<usize>() as isize
2020
}
2121
}
2222

23-
impl Distribution<i8> for Uniform {
23+
impl Distribution<i8> for Standard {
2424
#[inline]
2525
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> i8 {
2626
rng.next_u32() as i8
2727
}
2828
}
2929

30-
impl Distribution<i16> for Uniform {
30+
impl Distribution<i16> for Standard {
3131
#[inline]
3232
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> i16 {
3333
rng.next_u32() as i16
3434
}
3535
}
3636

37-
impl Distribution<i32> for Uniform {
37+
impl Distribution<i32> for Standard {
3838
#[inline]
3939
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> i32 {
4040
rng.next_u32() as i32
4141
}
4242
}
4343

44-
impl Distribution<i64> for Uniform {
44+
impl Distribution<i64> for Standard {
4545
#[inline]
4646
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> i64 {
4747
rng.next_u64() as i64
4848
}
4949
}
5050

5151
#[cfg(feature = "i128_support")]
52-
impl Distribution<i128> for Uniform {
52+
impl Distribution<i128> for Standard {
5353
#[inline]
5454
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> i128 {
5555
rng.gen::<u128>() as i128
5656
}
5757
}
5858

59-
impl Distribution<usize> for Uniform {
59+
impl Distribution<usize> for Standard {
6060
#[inline]
6161
#[cfg(any(target_pointer_width = "32", target_pointer_width = "16"))]
6262
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> usize {
@@ -70,36 +70,36 @@ impl Distribution<usize> for Uniform {
7070
}
7171
}
7272

73-
impl Distribution<u8> for Uniform {
73+
impl Distribution<u8> for Standard {
7474
#[inline]
7575
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> u8 {
7676
rng.next_u32() as u8
7777
}
7878
}
7979

80-
impl Distribution<u16> for Uniform {
80+
impl Distribution<u16> for Standard {
8181
#[inline]
8282
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> u16 {
8383
rng.next_u32() as u16
8484
}
8585
}
8686

87-
impl Distribution<u32> for Uniform {
87+
impl Distribution<u32> for Standard {
8888
#[inline]
8989
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> u32 {
9090
rng.next_u32()
9191
}
9292
}
9393

94-
impl Distribution<u64> for Uniform {
94+
impl Distribution<u64> for Standard {
9595
#[inline]
9696
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> u64 {
9797
rng.next_u64()
9898
}
9999
}
100100

101101
#[cfg(feature = "i128_support")]
102-
impl Distribution<u128> for Uniform {
102+
impl Distribution<u128> for Standard {
103103
#[inline]
104104
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> u128 {
105105
// Use LE; we explicitly generate one value before the next.
@@ -113,26 +113,26 @@ impl Distribution<u128> for Uniform {
113113
#[cfg(test)]
114114
mod tests {
115115
use Rng;
116-
use distributions::{Uniform};
116+
use distributions::{Standard};
117117

118118
#[test]
119119
fn test_integers() {
120120
let mut rng = ::test::rng(806);
121121

122-
rng.sample::<isize, _>(Uniform);
123-
rng.sample::<i8, _>(Uniform);
124-
rng.sample::<i16, _>(Uniform);
125-
rng.sample::<i32, _>(Uniform);
126-
rng.sample::<i64, _>(Uniform);
122+
rng.sample::<isize, _>(Standard);
123+
rng.sample::<i8, _>(Standard);
124+
rng.sample::<i16, _>(Standard);
125+
rng.sample::<i32, _>(Standard);
126+
rng.sample::<i64, _>(Standard);
127127
#[cfg(feature = "i128_support")]
128-
rng.sample::<i128, _>(Uniform);
128+
rng.sample::<i128, _>(Standard);
129129

130-
rng.sample::<usize, _>(Uniform);
131-
rng.sample::<u8, _>(Uniform);
132-
rng.sample::<u16, _>(Uniform);
133-
rng.sample::<u32, _>(Uniform);
134-
rng.sample::<u64, _>(Uniform);
130+
rng.sample::<usize, _>(Standard);
131+
rng.sample::<u8, _>(Standard);
132+
rng.sample::<u16, _>(Standard);
133+
rng.sample::<u32, _>(Standard);
134+
rng.sample::<u64, _>(Standard);
135135
#[cfg(feature = "i128_support")]
136-
rng.sample::<u128, _>(Uniform);
136+
rng.sample::<u128, _>(Standard);
137137
}
138138
}

src/distributions/mod.rs

+12-12
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,12 @@ pub trait Distribution<T> {
140140
///
141141
/// ```rust
142142
/// use rand::thread_rng;
143-
/// use rand::distributions::{Distribution, Alphanumeric, Range, Uniform};
143+
/// use rand::distributions::{Distribution, Alphanumeric, Range, Standard};
144144
///
145145
/// let mut rng = thread_rng();
146146
///
147147
/// // Vec of 16 x f32:
148-
/// let v: Vec<f32> = Uniform.sample_iter(&mut rng).take(16).collect();
148+
/// let v: Vec<f32> = Standard.sample_iter(&mut rng).take(16).collect();
149149
///
150150
/// // String:
151151
/// let s: String = Alphanumeric.sample_iter(&mut rng).take(7).collect();
@@ -208,7 +208,7 @@ impl<'a, T, D: Distribution<T>> Distribution<T> for &'a D {
208208
///
209209
/// ## Built-in Implementations
210210
///
211-
/// This crate implements the distribution `Uniform` for various primitive
211+
/// This crate implements the distribution `Standard` for various primitive
212212
/// types. Assuming the provided `Rng` is well-behaved, these implementations
213213
/// generate values with the following ranges and distributions:
214214
///
@@ -222,32 +222,32 @@ impl<'a, T, D: Distribution<T>> Distribution<T> for &'a D {
222222
/// * Floating point types (`f32` and `f64`): Uniformly distributed in the
223223
/// open range `(0, 1)`.
224224
///
225-
/// The following aggregate types also implement the distribution `Uniform` as
225+
/// The following aggregate types also implement the distribution `Standard` as
226226
/// long as their component types implement it:
227227
///
228228
/// * Tuples and arrays: Each element of the tuple or array is generated
229-
/// independently, using the `Uniform` distribution recursively.
229+
/// independently, using the `Standard` distribution recursively.
230230
/// * `Option<T>`: Returns `None` with probability 0.5; otherwise generates a
231231
/// random `T` and returns `Some(T)`.
232232
///
233233
/// # Example
234234
/// ```rust
235235
/// use rand::{NewRng, SmallRng, Rng};
236-
/// use rand::distributions::Uniform;
236+
/// use rand::distributions::Standard;
237237
///
238-
/// let val: f32 = SmallRng::new().sample(Uniform);
238+
/// let val: f32 = SmallRng::new().sample(Standard);
239239
/// println!("f32 from (0,1): {}", val);
240240
/// ```
241241
///
242242
/// With dynamic dispatch (type erasure of `Rng`):
243243
///
244244
/// ```rust
245245
/// use rand::{thread_rng, Rng, RngCore};
246-
/// use rand::distributions::Uniform;
246+
/// use rand::distributions::Standard;
247247
///
248248
/// let mut rng = thread_rng();
249249
/// let erased_rng: &mut RngCore = &mut rng;
250-
/// let val: f32 = erased_rng.sample(Uniform);
250+
/// let val: f32 = erased_rng.sample(Standard);
251251
/// println!("f32 from (0,1): {}", val);
252252
/// ```
253253
///
@@ -274,12 +274,12 @@ impl<'a, T, D: Distribution<T>> Distribution<T> for &'a D {
274274
/// [`Exp1`]: struct.Exp1.html
275275
/// [`StandardNormal`]: struct.StandardNormal.html
276276
#[derive(Debug)]
277-
pub struct Uniform;
277+
pub struct Standard;
278278

279279
#[allow(deprecated)]
280-
impl<T> ::Rand for T where Uniform: Distribution<T> {
280+
impl<T> ::Rand for T where Standard: Distribution<T> {
281281
fn rand<R: Rng>(rng: &mut R) -> Self {
282-
Uniform.sample(rng)
282+
Standard.sample(rng)
283283
}
284284
}
285285

0 commit comments

Comments
 (0)