Skip to content

Commit 5d16e2d

Browse files
committed
Add fisher yates random shuffle.
1 parent 73d52fb commit 5d16e2d

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ edition = "2021"
66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77

88
[dependencies]
9+
rand = "0.8.4"

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
pub mod linked_list;
22
pub mod queue;
3+
pub mod random;
34
pub mod sorting;
45
pub mod stack;

src/random/mod.rs

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
use rand::Rng;
2+
3+
pub fn fisher_yates_shuffle<T: Ord>(arr: &mut [T]) {
4+
for i in (1..arr.len()).rev() {
5+
let j = rand::thread_rng().gen_range(0..=i);
6+
arr.swap(i, j);
7+
}
8+
}

0 commit comments

Comments
 (0)