Simulating the Monty Hall problem using Streamlit

Arnav - Oct 20 - - Dev Community

The Monty Hall problem is a classic probability puzzle that has intrigued mathematicians and casual thinkers alike. It presents a scenario where a contestant must choose one of three doors, behind one of which is a car 🚗(the prize), while the other two doors hide goats 🐐. After the contestant makes their initial choice, the host, who knows what is behind each door, opens one of the remaining doors to reveal a goat. The contestant is then given the option to either stick with their original choice or switch to the other unopened door🚪.

Line Chart visualizing the wins for remain and switch

Although intuition would suggest that switching the door would have no effect on the probability of winning a car ( 1/2 probability of success either by switching or retaining), the truth is that switching the door would result in around 2/3 (67%) chance of success, while remaining with the original door would only result in around 1/3 (33%) chances of success.

The chances of success after switching approach (N-1/N) where N represents the number of doors. For large values of N, the probability of success P(S) by switching is ~1 (near certainty). I came across this problem during a Math fair in my school, and have been fascinated by it ever since. I created this simulator to visualize the problem and prove that switching doors is beneficial.

Libraries and tools used

  • Streamlit for the GUI
  • Altair for the interactive line chart
  • Pandas for recording the outcome of each iteration
  • Huggingface Spaces for hosting

Check the demo at:

https://huggingface.co/spaces/0xarnav/MontyHall

You can change the number of doors and iterations to see how the probabilities change. For example, at 10 doors the probability of success after switching becomes ~90%. This simulation proves the surprising conclusion that switching doors generally leads to a higher chance of winning.

References

UC Analytics for the cover image

. .