Winning Percentage

Python Puzzles

Back to the Python! homepage


Your favorite football team has the following pre-season estimated win percentages for their 12-game schedule. What is the most likely outcome for their final win total?

The win percentages are 95%, 26%, 55%, 63%, 45%, 75%, 60%, 52%, 51%, 72%, 59% and 81%.


The most likely outcome is 7 wins. Surprisingly, there are 2 simulations with 0 wins, even though the team is favored in 10 of the 12 games.

Most likely outcome for final win total: 7
Number of wins: 0, Count: 2
Number of wins: 1, Count: 5
Number of wins: 2, Count: 88
Number of wins: 3, Count: 638
Number of wins: 4, Count: 2931
Number of wins: 5, Count: 8394
Number of wins: 6, Count: 17234
Number of wins: 7, Count: 23958
Number of wins: 8, Count: 23278
Number of wins: 9, Count: 15384
Number of wins: 10, Count: 6439
Number of wins: 11, Count: 1486
Number of wins: 12, Count: 163
import numpy as np

# Define win probabilities
win_probabilities = [0.95, 0.26, 0.55, 0.63, 0.45, 0.75, 0.60, 0.52, 0.51, 0.72, 0.59, 0.81]

# Define number of simulations
num_simulations = 100000

# Define a function to simulate a season
def simulate_season():
    wins = 0
    for prob in win_probabilities:
        result = np.random.choice([1, 0], p=[prob, 1 - prob])  # Simulate a game with given win probability
        wins += result
    return wins

# Run simulations
win_totals = [simulate_season() for _ in range(num_simulations)]

# Analyze results
(unique, counts) = np.unique(win_totals, return_counts=True)
most_likely_wins = unique[np.argmax(counts)]

print(f"Most likely outcome for final win total: {most_likely_wins}")

# Print count of each number of wins
for (win_total, count) in zip(unique, counts):
    print(f"Number of wins: {win_total}, Count: {count}")