40 lines
840 B
Python
40 lines
840 B
Python
import os, string
|
|
|
|
def GetRandomBool() :
|
|
result = os.urandom(3)
|
|
r= sum(result) < 381.04
|
|
return r #average
|
|
|
|
def GetRandomNumber() :
|
|
result = os.urandom(4)
|
|
return int(sum(result))
|
|
|
|
def GetRandomRange(a, b):
|
|
if a > b:
|
|
a, b = b, a
|
|
|
|
range_size = b - a + 1
|
|
|
|
num_bits = 0
|
|
while 2 ** num_bits < range_size:
|
|
num_bits += 1
|
|
|
|
random_binary = [GetRandomBool() for _ in range(num_bits)]
|
|
|
|
random_integer = 0
|
|
for i, bit in enumerate(random_binary):
|
|
random_integer += bit * (2 ** i)
|
|
|
|
mapped_value = a + random_integer
|
|
if mapped_value > b : return GetRandomRange(a, b)
|
|
|
|
return mapped_value
|
|
|
|
def GetRandomString(l) :
|
|
letters = string.ascii_lowercase
|
|
s = ""
|
|
while len(s) < l :
|
|
r = GetRandomRange(0, len(letters)-1)
|
|
s += letters[r]
|
|
|
|
return s |