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

22 lines
382 B
Text
Raw Permalink Normal View History

2015-11-18 06:14:39 +00:00
use rand::Rng;
extern crate rand;
2014-01-17 05:32:22 +00:00
fn knuth_shuffle<T>(v: &mut [T]) {
2015-11-18 06:14:39 +00:00
let mut rng = rand::thread_rng();
2014-01-17 05:32:22 +00:00
let l = v.len();
2015-11-18 06:14:39 +00:00
for n in 0..l {
2014-01-17 05:32:22 +00:00
let i = rng.gen_range(0, l - n);
v.swap(i, l - n - 1);
}
}
fn main() {
2015-11-18 06:14:39 +00:00
let mut v: Vec<_> = (0..10).collect();
2014-01-17 05:32:22 +00:00
println!("before: {:?}", v);
2015-11-18 06:14:39 +00:00
knuth_shuffle(&mut v);
2014-01-17 05:32:22 +00:00
println!("after: {:?}", v);
}