Try to Prove “The House Always Wins” in Gambling with Python
Tags: python, montecarlo, simulation, gambling
Published: 2023-12-28 04:47:44

### Hello, I like money

![Photo by [Stephen Leonardi](https://unsplash.com/@stephenleo1982?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)](https://cdn-images-1.medium.com/max/13116/0*LGXPFPCM3yUeLDM6)

NOTE: This blog was written in December 2022 in Medium but I republished it to Dev.to as i planned to migrate for my future writing

Editorial Note from the original post:

from the simulation itself, the loss is usually more than the win but I have a bad way to count how much they win and how much they lose and I need to repair this in the future.

but the logic behind the game itself is more or less correct, if anyone saw the flaws please tell me in the repo.

## Backstory

So a few days ago my mom talk to me about how one of the neighbors borrowed money for ‘allegedly’ gambling online slots, and I naturally thought “How in the hell do people borrow money to lose it”, and since I always learned since I was little how bad gambling for ourselves, but in another side, I was fascinated in its economy and also the math of probability, heck it’s maybe one of my favorite branch of math(even though I don't really like math).

{% embed https://youtu.be/7cjIWMUgPtY %}

## Simulating Gambling in Python

There are tons and tons of forms of gambling out there, some of them are “Skill-based” like poker, blackjack, and most card-based games out there, and the others are pure chance like slots, roulette, and pachinko(mechanical gambling in japan).

I want to simulate Roulette, more specifically European roulette where it has only one zero compared to the American counterparts where it has 0 and 00. This way the house edge (a mathematical advantage that the house has compared to the player) is lower than if we use American style Roulette to see how much the house will earn from such a small house edge, also its easier to code hehe

![Photo by [Derek Lynn](https://unsplash.com/@derek_lynn?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)](https://cdn-images-1.medium.com/max/12000/0*3A6BTlMubBV9n4ce)
>  What’s Roulette tho??

According to its Wikipedia page, Roulette is a casino game named after the French word meaning little wheel which was likely developed from the Italian game Biribi. In the game, a player may choose to place a bet on a single number, various groupings of numbers, the color red or black, whether the number is odd or even, or if the numbers are high (19–36) or low (1–18). The odds and the payout will depend on the bet the player placed, the broader the bets the better the odds they'll earn but the lesser the payout.
>  and how to calculate how much house edge of a game?

Since it's European Roulette, let's say the player places a bet on a single number then there is a 36 in 37 chance that the bet will lose and a 1 in 37 chance that you will earn 35 times your bet, so the house edge will be like below.

−1 × (36⁄37) + 35 × (1⁄37) = −0.0270 or 2.7% in favour of the house.

If it's American or heck, there is roulette with triple zeros, the house edge will naturally be higher so, in general, will have a bigger profit compared to the European one.

That's a general idea of Roulette, I will use Python to simulate how roulette works, and see how much they'll earn(or lose) and also how much the house will make.

## The Simulator……Yab-
{% embed https://tenor.com/bsQbu.gif %}
Obviously, this is the hard part, so….fasten your seatbelt.
>  OMG, I didn't this blog actually takes a long time to make, too many effort for mere blog post lmao
[**GitHub - dhupee/roulette-simulation: a simple cli for roullete simulation**](https://github.com/dhupee/roulette-simulation)

so I create this simple CLI to simulate roulette with Monte-Carlo simulation in it, can't really show the code here since its a bit long for this post but you can see it in Github(also give it some improvement hehe).

![The CLI of the app, hope it looks self-explanatory](https://cdn-images-1.medium.com/max/2000/1*s6pig82d_bLhgMMM2MkzPg.png)

To be honest, I was having fun with this CLI not only I actually learned about Command-Line Interface and JIT compilation I found it interesting.

## The Result

running it 3 times with three different tendency settings which just the setting on which bet type the simulator will choose, starter money of 10k, 100 rounds, bet size of 100, and 10000 sessions of betting I got this chart

![](https://cdn-images-1.medium.com/max/2000/1*eoSpwozxgFgBfrcSK0OrbQ.png)

![](https://cdn-images-1.medium.com/max/2000/1*3L1ljyQVj93xUrXf4dSSsg.png)

![wait, I don't know if I can place the picture like this](https://cdn-images-1.medium.com/max/2000/1*P0jb_gWm-WzDcC7T65xxwQ.png)

The safe tendency which chooses either dozen, column, odd or even, or other safe bet has such a chart that spread kinda evenly, don't you think??

The others, random and dangerous look kinda towards loss if I see it, the one where the player got profit is kinda sparse.

## **Do I Prove Anything?**

not sure, this simulation has a lot of things left like the distribution chart and other features.

If I eyeball it, looks like it. More so on the random one, the chart looks so dense on the player losing that the chart where it wins it.

let me know more in the comment, and have fun with the script if you want. Better yet, help me improve it.

cheers