Distrib

Trait Distrib 

Source
pub trait Distrib: Clone {
    type Sample;

    // Required method
    fn sample(&self, rng: &mut DefaultRng) -> Self::Sample;

    // Provided method
    fn samples(
        &self,
        rng: &mut DefaultRng,
    ) -> impl Iterator<Item = Self::Sample> { ... }
}
Expand description

Trait for generating values sampled from a probability distribution.

Required Associated Types§

Source

type Sample

The type of the elements of the sample space of Self, also called “outcomes”.

Required Methods§

Source

fn sample(&self, rng: &mut DefaultRng) -> Self::Sample

Returns a pseudo-random value sampled from self.

§Examples
use retrofire_core::math::rand::*;

// Simulate rolling a six-sided die
let rng = &mut DefaultRng::default();
let d6 = Uniform(1..7).sample(rng);
assert_eq!(d6, 3);

Provided Methods§

Source

fn samples(&self, rng: &mut DefaultRng) -> impl Iterator<Item = Self::Sample>

Returns an iterator that yields samples from self indefinitely.

§Examples
use retrofire_core::math::rand::*;

// Simulate rolling a six-sided die three times
let rng = &mut DefaultRng::default();
let mut iter = Uniform(1u32..7).samples(rng);

assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), Some(4));

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<D: Distrib, E: Distrib> Distrib for (D, E)

Source§

fn sample(&self, rng: &mut DefaultRng) -> Self::Sample

Returns a pair of samples, sampled from two separate distributions.

Source§

type Sample = (<D as Distrib>::Sample, <E as Distrib>::Sample)

Implementors§

Source§

impl Distrib for Bernoulli

Source§

impl Distrib for PointsInUnitBall

Source§

type Sample = Point<[f32; 3], Real<3>>

Source§

impl Distrib for PointsOnUnitDisk

Source§

type Sample = Point<[f32; 2], Real<2>>

Source§

impl Distrib for Uniform<f32>

Uniformly distributed floats.

Source§

impl Distrib for Uniform<i32>

Uniformly distributed signed integers.

Source§

impl Distrib for Uniform<u32>

Uniformly distributed unsigned integers.

Source§

impl Distrib for Uniform<usize>

Uniformly distributed indices.

Source§

impl Distrib for UnitCircle

Available on crate feature fp only.
Source§

type Sample = Vector<[f32; 2], Real<2>>

Source§

impl Distrib for UnitSphere

Available on crate feature fp only.
Source§

type Sample = Vector<[f32; 3], Real<3>>

Source§

impl Distrib for VectorsInUnitBall

Source§

type Sample = Vector<[f32; 3], Real<3>>

Source§

impl Distrib for VectorsOnUnitDisk

Source§

type Sample = Vector<[f32; 2], Real<2>>

Source§

impl<Sc, Sp, const DIM: usize> Distrib for Uniform<Color<[Sc; DIM], Sp>>
where Sc: Copy, Sp: Clone, Uniform<[Sc; DIM]>: Distrib<Sample = [Sc; DIM]>,

Source§

impl<Sc, Sp, const DIM: usize> Distrib for Uniform<Point<[Sc; DIM], Sp>>
where Sc: Copy, Uniform<[Sc; DIM]>: Distrib<Sample = [Sc; DIM]>,

Uniformly distributed points within a rectangular volume.

Source§

impl<Sc, Sp, const DIM: usize> Distrib for Uniform<Vector<[Sc; DIM], Sp>>
where Sc: Copy, Uniform<[Sc; DIM]>: Distrib<Sample = [Sc; DIM]>,

Uniformly distributed vectors within a rectangular volume.

Source§

impl<T, const N: usize> Distrib for Uniform<[T; N]>
where T: Copy, Uniform<T>: Distrib<Sample = T>,