Function reservoir::sample [] [src]

pub fn sample<I, RNG>(
    rng: &mut RNG,
    sample_size: usize,
    iter: I
) -> Vec<I::Item> where
    I: Iterator,
    RNG: Rng

Return a random sample of a known maximum size from an iterator of unknown length.

Examples

let iter = 0..10;
 
let samples = sample(&mut thread_rng(), 4, iter);
 
assert_eq!(4, samples.len());
assert!(samples.iter().all(|e| *e >= 0 && *e < 10));

If the sampled iterator contains fewer items than the sample_size, all items are returned.

let iter = 0..10;
 
let samples : Vec<i32> = sample(&mut thread_rng(), 20, iter);
let expected_samples : Vec<i32> = (0..10).collect();
 
assert_eq!(expected_samples, samples);