I tried to solve the classic problem of generating a random integer between 1 and 7, given a function that generates a random integer between 1 and 5. My approach was to add the result of 2 calls to rand5(), effectively turning this into a "sum of dice rolls" problem. The probability of the sum dice rolls is fairly easy to calculate, so I used it here.
My question is: How can I calculate what the values of counter should be? The current values are incorrect, as verified by experiment. Do integer values exist that satisfy the probability? And is there a better way to solve this problem with this approach?
def rand5():
return random.randint(1,5)
def rand7():
counter = [1,2,3,4,5,4,3]
while 0 not in counter:
sum = rand5() + rand5() - 2
if sum <= 6:
counter[sum] -= 1
return counter.index(0) + 1
Aucun commentaire:
Enregistrer un commentaire