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