Commit a5cc5f7854

Matthew Borkowski <matthew.h.borkowski@gmail.com>
2021-03-28 15:49:10
Fix typo in Pcg.zig's fill function
When filling the last (len % 4) bytes of a buffer, the random number n was only being shifted right by 4 bits for each byte instead of 8. A random u16, for example, would always have its middle two nybbles be equal when generated this way. For comparison, Isaac64.zig, Sfc64.zig, and Xoroshiro128.zig all correctly shift right by 8 bits for each of the last bytes in their nearly identical fill functions.
1 parent 175adc0
Changed files (1)
lib
std
rand
lib/std/rand/Pcg.zig
@@ -75,7 +75,7 @@ fn fill(r: *Random, buf: []u8) void {
         var n = self.next();
         while (i < buf.len) : (i += 1) {
             buf[i] = @truncate(u8, n);
-            n >>= 4;
+            n >>= 8;
         }
     }
 }