Function rand04::seq::sample_iter
source · pub fn sample_iter<T, I, R>(
rng: &mut R,
iterable: I,
amount: usize
) -> Result<Vec<T, Global>, Vec<T, Global>>where
I: IntoIterator<Item = T>,
R: Rng,
Expand description
Randomly sample amount
elements from a finite iterator.
The following can be returned:
Ok
:Vec
ofamount
non-repeating randomly sampled elements. The order is not random.Err
:Vec
of all the elements fromiterable
in sequential order. This happens when the length ofiterable
was less thanamount
. This is considered an error since exactlyamount
elements is typically expected.
This implementation uses O(len(iterable))
time and O(amount)
memory.
Example
use rand::{thread_rng, seq};
let mut rng = thread_rng();
let sample = seq::sample_iter(&mut rng, 1..100, 5).unwrap();
println!("{:?}", sample);