File tree Expand file tree Collapse file tree 1 file changed +14
-10
lines changed Expand file tree Collapse file tree 1 file changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -673,19 +673,23 @@ where
673673fn break_patterns < T > ( v : & mut [ T ] ) {
674674 let len = v. len ( ) ;
675675 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;
684677 let mut gen_usize = || {
678+ // Pseudorandom number generator from the "Xorshift RNGs" paper by George Marsaglia.
685679 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
687686 } 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
689693 }
690694 } ;
691695
You can’t perform that action at this time.
0 commit comments