Skip to content

Commit acef3e5

Browse files
authored
feat: add predict_random
1 parent 260241e commit acef3e5

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

randcrack/randcrack.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ def predict_choice(self, seq):
9898
raise IndexError('Cannot choose from an empty sequence')
9999
return seq[i]
100100

101+
def predict_random(self):
102+
a = self._to_int(self._predict_32()) >> 5
103+
b = self._to_int(self._predict_32()) >> 6
104+
return ((a*67108864.0)+b)/9007199254740992.0
105+
101106
def _to_bitarray(self, num):
102107
k = [int(x) for x in bin(num)[2:]]
103108
return [0] * (32 - len(k)) + k

tests/test_randcrack.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,12 @@ def test_predict_first_1000_close():
5050
cracker.submit(random.randint(0, 4294967294))
5151

5252
assert sum([random.getrandbits(32) == cracker.predict_getrandbits(32) for _ in range(1000)]) >= 980
53+
54+
def test_predict_random():
55+
random.seed(time.time())
56+
57+
cracker = RandCrack()
58+
59+
for i in range(624):
60+
cracker.submit(random.randint(0, 4294967294))
61+
assert sum([random.random() == cracker.predict_random() for _ in range(1000)]) >= 980

0 commit comments

Comments
 (0)