Andrew Kuchling writes:
First, the RNG in whrandom.py sucks if you let it seed itself from the time.
The problem is the line:
t = int((t&0xffffff) | (t>>24))
Since it ORs the two parts together, the resulting value has mostly
ON bits. Change | to ^, and you don't lose any randomness.
diff --git a/Lib/whrandom.py b/Lib/whrandom.py
index bd2dcf7..95e88f3 100644
--- a/Lib/whrandom.py
+++ b/Lib/whrandom.py
@@ -50,7 +50,7 @@
# Initialize from current time
import time
t = long(time.time() * 256)
- t = int((t&0xffffff) | (t>>24))
+ t = int((t&0xffffff) ^ (t>>24))
t, x = divmod(t, 256)
t, y = divmod(t, 256)
t, z = divmod(t, 256)