A distribution to sample floating point numbers uniformly in the open
interval (0, 1)
, i.e. not including either endpoint.
All values that can be generated are of the form n * ε + ε/2
. For f32
the 22 most significant random bits of an u32
are used, for f64
52 from
an u64
. The conversion uses a transmute-based method.
See also: Standard
which samples from [0, 1)
, OpenClosed01
which samples from (0, 1]
and Uniform
which samples from arbitrary
ranges.
use rand::{thread_rng, Rng};
use rand::distributions::Open01;
let val: f32 = thread_rng().sample(Open01);
println!("f32 from (0, 1): {}", val);
Performs copy-assignment from source
. Read more
Formats the value using the given formatter. Read more
Generate a random value of T
, using rng
as the source of randomness.
Important traits for DistIter<'a, D, R, T>
impl<'a, D, R, T> Iterator for DistIter<'a, D, R, T> where
D: Distribution<T>,
R: Rng + 'a, type Item = T;
Create an iterator that generates random values of T
, using rng
as the source of randomness. Read more
Generate a random value of T
, using rng
as the source of randomness.
Important traits for DistIter<'a, D, R, T>
impl<'a, D, R, T> Iterator for DistIter<'a, D, R, T> where
D: Distribution<T>,
R: Rng + 'a, type Item = T;
Create an iterator that generates random values of T
, using rng
as the source of randomness. Read more