File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change 1+ use std:: time:: { SystemTime , UNIX_EPOCH } ;
2+
3+ use crate :: math:: PCG32 ;
4+
5+ const DEFAULT : u64 = 4294967296 ;
6+
7+ fn gen_range ( range : usize , generator : & mut PCG32 ) -> usize {
8+ generator. get_u64 ( ) as usize % range
9+ }
10+
11+ pub fn fisher_yates_shuffle ( array : & mut [ i32 ] ) {
12+ let seed = match SystemTime :: now ( ) . duration_since ( UNIX_EPOCH ) {
13+ Ok ( duration) => duration. as_millis ( ) as u64 ,
14+ Err ( _) => DEFAULT ,
15+ } ;
16+
17+ let mut random_generator = PCG32 :: new_default ( seed) ;
18+
19+ let len = array. len ( ) ;
20+
21+ for i in 0 ..( len - 2 ) {
22+ let r = gen_range ( len - i, & mut random_generator) ;
23+ array. swap ( i, i + r) ;
24+ }
25+ }
Original file line number Diff line number Diff line change 11mod convex_hull;
2+ mod fisher_yates_shuffle;
23mod hanoi;
34mod huffman_encoding;
45mod kmeans;
56mod nqueens;
67mod two_sum;
78
89pub use self :: convex_hull:: convex_hull_graham;
10+ pub use self :: fisher_yates_shuffle:: fisher_yates_shuffle;
911pub use self :: hanoi:: hanoi;
1012pub use self :: huffman_encoding:: { HuffmanDictionary , HuffmanEncoding } ;
1113pub use self :: kmeans:: f32:: kmeans as kmeans_f32;
You can’t perform that action at this time.
0 commit comments