fix #1703
This commit is contained in:
parent
475d642541
commit
0ae04a6419
|
@ -25,7 +25,6 @@
|
||||||
|
|
||||||
from collections import defaultdict, namedtuple
|
from collections import defaultdict, namedtuple
|
||||||
from math import floor, log10
|
from math import floor, log10
|
||||||
import struct
|
|
||||||
|
|
||||||
from bitcoin import sha256, COIN, TYPE_ADDRESS
|
from bitcoin import sha256, COIN, TYPE_ADDRESS
|
||||||
from transaction import Transaction
|
from transaction import Transaction
|
||||||
|
@ -50,22 +49,23 @@ class PRNG:
|
||||||
result, self.pool = self.pool[:n], self.pool[n:]
|
result, self.pool = self.pool[:n], self.pool[n:]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def random(self):
|
|
||||||
# Returns random double in [0, 1)
|
|
||||||
four = self.get_bytes(4)
|
|
||||||
return struct.unpack("I", four)[0] / 4294967296.0
|
|
||||||
|
|
||||||
def randint(self, start, end):
|
def randint(self, start, end):
|
||||||
# Returns random integer in [start, end)
|
# Returns random integer in [start, end)
|
||||||
return start + int(self.random() * (end - start))
|
n = end - start
|
||||||
|
r = 0
|
||||||
|
p = 1
|
||||||
|
while p < n:
|
||||||
|
r = self.get_bytes(1)[0] + (r << 8)
|
||||||
|
p = p << 8
|
||||||
|
return start + (r % n)
|
||||||
|
|
||||||
def choice(self, seq):
|
def choice(self, seq):
|
||||||
return seq[int(self.random() * len(seq))]
|
return seq[self.randint(0, seq)]
|
||||||
|
|
||||||
def shuffle(self, x):
|
def shuffle(self, x):
|
||||||
for i in reversed(xrange(1, len(x))):
|
for i in reversed(xrange(1, len(x))):
|
||||||
# pick an element in x[:i+1] with which to exchange x[i]
|
# pick an element in x[:i+1] with which to exchange x[i]
|
||||||
j = int(self.random() * (i+1))
|
j = self.randint(0, i+1)
|
||||||
x[i], x[j] = x[j], x[i]
|
x[i], x[j] = x[j], x[i]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue