# sample_weighted in rand::seq::index - Rust
Randomly sample exactly `amount` distinct indices from `0..length`, and return them in an arbitrary order (there is no guarantee of shuffling or ordering). The weights are to be provided by the input function `weights`, which will be called once for each index.
Keywords: rust, rustlang, rust-lang, sample_weighted

# Function rand::seq::index::sample_weighted

source · [−]

    pub fn sample_weighted<R, F, X>(
        rng: &mut R,
        length: usize,
        weight: F,
        amount: usize
    ) -> Result<IndexVec, WeightedError> where
        R: Rng + ?Sized,
        F: Fn(usize) -> X,
        X: Into<f64>,

Expand description

Randomly sample exactly `amount` distinct indices from `0..length`, and return them in an arbitrary order (there is no guarantee of shuffling or ordering). The weights are to be provided by the input function `weights`, which will be called once for each index.

This method is used internally by the slice sampling methods, but it can sometimes be useful to have the indices themselves so this is provided as an alternative.

This implementation uses `O(length + amount)` space and `O(length)` time if the “nightly” feature is enabled, or `O(length)` space and `O(length + amount * log length)` time otherwise.

Panics if `amount > length`.