DEV Community

Cover image for Simulating the flip of a coin using python

Simulating the flip of a coin using python

gsbansal10 profile image Gauri Shanker ・2 min read

Recently I published a YouTube video in which I calculated the probability of a head on a coin flip. The catch here is that it is also to be demonstrated using a computer program simulating a coin flip for at least a million iterations. You can watch the video here -

Mathematically speaking, the probability of an event is calculated by the following formula -

Probability of an event = (Number of favorable events)/(Number of all possible events)(Number~of~favorable~events)/(Number~of~all~possible~events)

Here, in this scenario, the favorable event is the appearance of 'Head' and all possible events are any of the faces 'Heads or Tails'. Thus the number of favorable events is 1 whereas the number of all possible events is 2. Thus according to the formula of probability- we get a probability of 1/2 or 50% approx.

Well, now is the time to simulate that using python. Let's get moving -

First of all, import the random module because we have to randomly select a face of the coin.

import random

Now, its time to create a function, we name it experiment. This function will simulate one coin flip and return 1 if we get a Head and 0 if we got a Tail.

def experiment():
    faces = ['T', 'H'] # all possible faces
    top_face = random.random(faces) # randomly choose a face

    if top_face == 'H': # Checking if we got a head
        return 1 # return 1 if success
    return 0 # otherwise return 0

Now that we have created our function, its time to test it for a million iterations -

headCounter = 0 # variable to count the number of times we get heads
# conduct the experiment a million times and count the heads
for _ in range(1000000):
    headCounter += experiment()
# Print the results as percentage of total number of iterations
print(f"The probability of getting head is {headCounter / 1000000 * 100}%")

In my tests, I am consistently getting numbers close to 50 such as 50.0021% and 50.0017% which is in-line with our calculations.

Hope you enjoyed this article. You can also watch my YouTube video here on which this article is based.

Thanks and bye guys. I will see you in the next one.

Discussion (0)

Editor guide