Three Dice Rolls

Python Puzzles

Back to the Python! homepage


The casino has an interesting new game.

You start with a bankroll of $100 and place a $1 bet on a number 1 through 6. You then roll three dice, and if any of the dice rolls match your original bet, you win the number of matching dice ($1, $2, or $3) plus your original $1 bet back. If you lose, your bankroll goes down $1. You must play the game 100 times and keep the sum of your bankroll at the end of the 100 dice rolls.

What are the odds of winning?


Taking the bet is a personal choice, but the odds are not in the bettor’s favor, as you have more to lose than possibly gain.

On average, you will lose $8, but you could lose up to $50 or possibly gain $36.

The average is 92.2649
The percentage over 100 is 0.2243
The min result is 50
The max result is 135
import random
import numpy as np
import matplotlib.pyplot as plt

result = []
for _ in range(10_000):

    # start with 100 dollars
    i = 100
    win = 0

    for _ in range(100):
        # bet randomly between 0 and 5 dollars
        bet = random.randint(0,5)
        
        # roll 3 dice with 6 sides each
        diceroll = np.random.choice(6, 3, replace=True)
        
        # you can win 1,2 or 3 points
        for x in diceroll:
            if bet == x:
                win = 1
                i += 1
        
        # bettor gets their original point back, or loses their bet
        if win == 0:
            i -= 1
        
        win = 0
        
    result.append(i)

over100 = 0
for j in result:
    if j > 100: over100 += 1
 
# print the results
print('The average is ' + str(sum(result)/len(result)))
print('The percentage over 100 is ' + str(over100/10_000))
print('The min result is ' + str(min(result)))
print('The max result is ' + str(max(result)))

# plot the histogram
plt.hist(result, bins=20)
plt.xlabel('Amount')
plt.ylabel('Count')
plt.title('Simulation of a Betting Game')
plt.savefig('three-dice-rolls-hist.png', dpi=300, bbox_inches='tight')
plt.show()