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
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