Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /