Solve rand7

Write a random number generator for [0,7) using only a random number generator
for [0,5). Ensure the results are uniformly distributed.
This commit is contained in:
William Carroll 2020-11-14 17:26:00 +00:00
parent a0e9e2b310
commit 5820f6f459

View file

@ -0,0 +1,22 @@
# Define a function, rand7, that generates a random number [0,7), using only
# rand5, which generates a random number [0,5).
import random
from collections import Counter
# Returns [0,4]
def rand5():
return random.randint(0,4)
def rand4():
x = rand7()
if x >= 4:
return rand4()
return x
# Return [0,6]
def rand7():
return sum(rand5() for _ in range(7)) % 7
c = Counter([rand4() for _ in range(100000)])
print(c)