Struct rand_distr::Normal
source · [−]pub struct Normal<F> where
F: Float,
StandardNormal: Distribution<F>, { /* private fields */ }
Expand description
The normal distribution N(mean, std_dev**2)
.
This uses the ZIGNOR variant of the Ziggurat method, see StandardNormal
for more details.
Note that StandardNormal
is an optimised implementation for mean 0, and
standard deviation 1.
Example
use rand_distr::{Normal, Distribution};
// mean 2, standard deviation 3
let normal = Normal::new(2.0, 3.0).unwrap();
let v = normal.sample(&mut rand::thread_rng());
println!("{} is from a N(2, 9) distribution", v)
Implementations
sourceimpl<F> Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
impl<F> Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
sourcepub fn new(mean: F, std_dev: F) -> Result<Normal<F>, Error>
pub fn new(mean: F, std_dev: F) -> Result<Normal<F>, Error>
Construct, from mean and standard deviation
Parameters:
- mean (
μ
, unrestricted) - standard deviation (
σ
, must be finite)
sourcepub fn from_mean_cv(mean: F, cv: F) -> Result<Normal<F>, Error>
pub fn from_mean_cv(mean: F, cv: F) -> Result<Normal<F>, Error>
Construct, from mean and coefficient of variation
Parameters:
- mean (
μ
, unrestricted) - coefficient of variation (
cv = abs(σ / μ)
)
sourcepub fn from_zscore(&self, zscore: F) -> F
pub fn from_zscore(&self, zscore: F) -> F
Sample from a z-score
This may be useful for generating correlated samples x1
and x2
from two different distributions, as follows.
let mut rng = thread_rng();
let z = StandardNormal.sample(&mut rng);
let x1 = Normal::new(0.0, 1.0).unwrap().from_zscore(z);
let x2 = Normal::new(2.0, -3.0).unwrap().from_zscore(z);
Trait Implementations
sourceimpl<F: Clone> Clone for Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
impl<F: Clone> Clone for Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
sourceimpl<F: Debug> Debug for Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
impl<F: Debug> Debug for Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
sourceimpl<F> Distribution<F> for Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
impl<F> Distribution<F> for Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
sourcefn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> F
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> F
Generate a random value of T
, using rng
as the source of randomness.
sourcefn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>ⓘNotable traits for DistIter<D, R, T>impl<D, R, T> Iterator for DistIter<D, R, T> where
D: Distribution<T>,
R: Rng, type Item = T;
where
R: Rng,
fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>ⓘNotable traits for DistIter<D, R, T>impl<D, R, T> Iterator for DistIter<D, R, T> where
D: Distribution<T>,
R: Rng, type Item = T;
where
R: Rng,
D: Distribution<T>,
R: Rng, type Item = T;
Create an iterator that generates random values of T
, using rng
as
the source of randomness. Read more
impl<F: Copy> Copy for Normal<F> where
F: Float,
StandardNormal: Distribution<F>,
Auto Trait Implementations
impl<F> RefUnwindSafe for Normal<F> where
F: RefUnwindSafe,
impl<F> Send for Normal<F> where
F: Send,
impl<F> Sync for Normal<F> where
F: Sync,
impl<F> Unpin for Normal<F> where
F: Unpin,
impl<F> UnwindSafe for Normal<F> where
F: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more