File tree 1 file changed +14
-10
lines changed
1 file changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -673,19 +673,23 @@ where
673
673
fn break_patterns < T > ( v : & mut [ T ] ) {
674
674
let len = v. len ( ) ;
675
675
if len >= 8 {
676
- // Pseudorandom number generator from the "Xorshift RNGs" paper by George Marsaglia.
677
- let mut random = len as u32 ;
678
- let mut gen_u32 = || {
679
- random ^= random << 13 ;
680
- random ^= random >> 17 ;
681
- random ^= random << 5 ;
682
- random
683
- } ;
676
+ let mut seed = len;
684
677
let mut gen_usize = || {
678
+ // Pseudorandom number generator from the "Xorshift RNGs" paper by George Marsaglia.
685
679
if usize:: BITS <= 32 {
686
- gen_u32 ( ) as usize
680
+ let mut r = seed as u32 ;
681
+ r ^= r << 13 ;
682
+ r ^= r >> 17 ;
683
+ r ^= r << 5 ;
684
+ seed = r as usize ;
685
+ seed
687
686
} else {
688
- ( ( ( gen_u32 ( ) as u64 ) << 32 ) | ( gen_u32 ( ) as u64 ) ) as usize
687
+ let mut r = seed as u64 ;
688
+ r ^= r << 13 ;
689
+ r ^= r >> 7 ;
690
+ r ^= r << 17 ;
691
+ seed = r as usize ;
692
+ seed
689
693
}
690
694
} ;
691
695
You can’t perform that action at this time.
0 commit comments