Trait rand::seq::IndexedMutRandom

source ·
pub trait IndexedMutRandom: IndexedRandom + IndexMut<usize> {
    // Provided methods
    fn choose_mut<R>(&mut self, rng: &mut R) -> Option<&mut Self::Output>
       where R: Rng + ?Sized { ... }
    fn choose_weighted_mut<R, F, B, X>(
        &mut self,
        rng: &mut R,
        weight: F
    ) -> Result<&mut Self::Output, WeightError>
       where R: Rng + ?Sized,
             F: Fn(&Self::Output) -> B,
             B: SampleBorrow<X>,
             X: SampleUniform + Weight + PartialOrd<X> { ... }
}
Expand description

Extension trait on indexable lists, providing random sampling methods.

This trait is implemented automatically for every type implementing IndexedRandom and std::ops::IndexMut<usize>.

Provided Methods§

source

fn choose_mut<R>(&mut self, rng: &mut R) -> Option<&mut Self::Output>
where R: Rng + ?Sized,

Uniformly sample one element (mut)

Returns a mutable reference to one uniformly-sampled random element of the slice, or None if the slice is empty.

For slices, complexity is O(1).

source

fn choose_weighted_mut<R, F, B, X>( &mut self, rng: &mut R, weight: F ) -> Result<&mut Self::Output, WeightError>
where R: Rng + ?Sized, F: Fn(&Self::Output) -> B, B: SampleBorrow<X>, X: SampleUniform + Weight + PartialOrd<X>,

Available on crate feature alloc only.

Biased sampling for one element (mut)

Returns a mutable reference to one element of the slice, sampled according to the provided weights. Returns None only if the slice is empty.

The specified function weight maps each item x to a relative likelihood weight(x). The probability of each item being selected is therefore weight(x) / s, where s is the sum of all weight(x).

For slices of length n, complexity is O(n). For more information about the underlying algorithm, see distributions::WeightedIndex.

See also choose_weighted.

Object Safety§

This trait is not object safe.

Implementors§