Monte Carlo Method to estimate the probability of the sum of two dice thrown being 7

I have tried creating a program in Python where a Monte Carlo method is used to estimate the probability of the sum of two dice being 7.

The result I get is nothing close to the theoretical probability. I just now started coding in Python, so I am struggling to locate where the mistake is. Please let me know!

import random
import math


def monte_carlo_estimation():
    sum_seven = 1
    dice_thrown = 1
    prob = 0

    for z in range(0, 100):
        x = random.uniform(1, 6)
        y = random.uniform(1, 6)
        sum_wanted = x + y == 7
        if sum_wanted:
            sum_seven += 1
        dice_thrown += 1
        prob = sum_seven/dice_thrown

    print("Estimate: " + str(prob))


if __name__ == '__main__':
    monte_carlo_estimation()

>Solution :

random.uniform() returns a random floating point number. So your dice throws will have fractions, and the sums will practically never be exactly 7.

Since dice can only have integer values, you should use random.randint(1, 6) instead of random.uniform(1, 6).

Leave a Reply