RosettaCodeData/Task/Knuth-shuffle/Rust/knuth-shuffle.rust

22 lines
382 B
Plaintext

use rand::Rng;
extern crate rand;
fn knuth_shuffle<T>(v: &mut [T]) {
let mut rng = rand::thread_rng();
let l = v.len();
for n in 0..l {
let i = rng.gen_range(0, l - n);
v.swap(i, l - n - 1);
}
}
fn main() {
let mut v: Vec<_> = (0..10).collect();
println!("before: {:?}", v);
knuth_shuffle(&mut v);
println!("after: {:?}", v);
}