Function reservoir::sample_into [] [src]

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

Collect a random sample of a known maximum size from an iterator of unknown length into an existing Vec.

Examples

For example:

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

Preserves any elements already in the vector:

let iter = 0..10;
let mut samples : Vec<i32> = vec![99,100];
 
sample_into(&mut samples, &mut thread_rng(), 4, iter);
 
assert_eq!(6, samples.len());
assert_eq!(99, samples[0]);
assert_eq!(100, samples[1]);
assert!(samples[2..].iter().all(|e| *e >= 0 && *e < 10));