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§
sourcefn choose_mut<R>(&mut self, rng: &mut R) -> Option<&mut Self::Output>
fn choose_mut<R>(&mut self, rng: &mut R) -> Option<&mut Self::Output>
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)
.
sourcefn 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.
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>,
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
.