From 5820f6f45903d90779d449cf4b24fbdaff17a285 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Sat, 14 Nov 2020 17:26:00 +0000 Subject: [PATCH] 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. --- scratch/facebook/moderate/rand7.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 scratch/facebook/moderate/rand7.py diff --git a/scratch/facebook/moderate/rand7.py b/scratch/facebook/moderate/rand7.py new file mode 100644 index 000000000..19a96ed77 --- /dev/null +++ b/scratch/facebook/moderate/rand7.py @@ -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)