Python : Calculer la Probabilité de Gagner au Loto

probabilités de gagner au loto avec Python, incluant des extraits de code, des formules de probabilités, et un graphique en barres.

Cet article se propose de démystifier le calcul des probabilités dans le loto, en offrant une méthode claire et accessible pour analyser vos chances de gagner. Grâce à un script Python, nous allons calculer la probabilité de remporter le gros lot dans un jeu de loto.

Le Jeu de Loto : Règles et Structure

Au cœur de chaque jeu de loto se trouve un ensemble de règles. Ces règles sont essentielles non seulement pour guider les joueurs dans leurs choix, mais aussi pour déterminer les calculs de probabilités ou leurs “chances de victoire”. Dans notre exemple illustratif, nous allons prendre le jeu le plus connu d’Europe avec 5 numéros parmi un éventail allant de 1 à 50, et 2 numéros supplémentaires parmi une gamme de 1 à 12.

Calculer les Probabilités avec Python

Le code suivant définit une fonction Python nommée calculate_combinations, qui utilise la fonction factorial de la bibliothèque math.

from math import factorial

def calculate_combinations(n, k):
    """Calcule le nombre de combinaisons possibles de choisir k parmi n."""
    return factorial(n) / (factorial(k) * factorial(n - k))

def lottery_odds():
    # Combinaisons pour les 5 premiers numéros (parmi 50)
    combinations_5_from_50 = calculate_combinations(50, 5)
    
    # Combinaisons pour les 2 derniers numéros (parmi 12)
    combinations_2_from_12 = calculate_combinations(12, 2)
    
    # Nombre total de combinaisons possibles
    total_combinations = combinations_5_from_50 * combinations_2_from_12
    
    # Probabilité de gagner le gros lot
    probability = 1 / total_combinations
    
    return probability

# Appel de la fonction et affichage de la probabilité
probability = lottery_odds()
print(f"La probabilité de gagner le gros lot est de 1 sur {1/probability:.0f}, soit {probability:.10f} de chance.")

Dans ce script :

  • La fonction calculate_combinations(n, k) calcule le nombre de combinaisons possibles pour choisir k numéros parmi n en utilisant la formule des combinaisons.
  • La fonction lottery_odds() utilise calculate_combinations pour trouver le nombre de combinaisons possibles pour les 5 numéros parmi 50 (combinations_5_from_50) et les 2 numéros parmi 12 (combinations_2_from_12), puis multiplie ces deux résultats pour obtenir le nombre total de combinaisons possibles pour le jeu de loto.
  • Enfin, la probabilité de gagner le gros lot est calculée en prenant l’inverse du nombre total de combinaisons, et cette probabilité est affichée de manière lisible.

Visualisation des Probabilités de Gagner au Loto avec Python

Une visualisation graphique avec matplotlib peut offrir une perspective plus intuitive.

import matplotlib.pyplot as plt
from math import factorial

def calculate_combinations(n, k):
    """Calcule le nombre de combinaisons possibles de choisir k parmi n."""
    return factorial(n) / (factorial(k) * factorial(n - k))

# Calcul des combinaisons pour les 5 numéros parmi 50
combinations_5_from_50 = calculate_combinations(50, 5)

# Calcul des combinaisons pour les 2 numéros parmi 12
combinations_2_from_12 = calculate_combinations(12, 2)

# Calcul du nombre total de combinaisons possibles
total_combinations = combinations_5_from_50 * combinations_2_from_12

# Probabilité de gagner le gros lot
winning_probability = 1 / total_combinations

# Préparation des données pour le graphique en barres
labels = ['Gagnant', 'Perdant']
values = [winning_probability, 1 - winning_probability]

# Création du graphique en barres
plt.figure(figsize=(10, 6))
bars = plt.bar(labels, values, color=['gold', 'lightcoral'])

# Ajout d'un titre et des étiquettes
plt.title('Comparaison des Probabilités de Gagner et de Perdre au Loto')
plt.ylabel('Probabilité')
plt.yscale('log')  # Échelle logarithmique pour mieux visualiser les petites valeurs

# Ajout de texte sur les barres
for bar in bars:
    yval = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2, yval, f'{yval:.10f}', ha='center', va='bottom')

plt.show()

Ici :

  • Après avoir calculé la probabilité de gagner, nous préparons deux catégories pour le graphique en barres : “Gagnant” et “Perdant“, avec leurs probabilités respectives.
  • Le graphique en barres est créé avec une distinction claire entre les chances de gagner (extrêmement faibles) et de perdre.
  • Une échelle logarithmique (plt.yscale('log')) est utilisée pour l’axe des ordonnées afin de mieux visualiser la faible probabilité de gagner comparée à celle de perdre.
  • Des étiquettes de texte sont ajoutées sur chaque barre pour indiquer la probabilité exacte, offrant une lecture précise des chances.