🎲Simuler en probabilités
Cours de mathématiques · Première
À partir d'une liste de tirages déjà réalisés, compter les succès, calculer une fréquence, estimer une probabilité (favorables / total) et calculer la moyenne d'une série de valeurs.
Ce que tu vas savoir faire
- ✓Compter le nombre de succès dans une liste de tirages.
- ✓Calculer la fréquence d'une valeur : effectif / effectif total.
- ✓Estimer une probabilité par une fréquence sur un grand nombre de tirages.
- ✓Calculer la moyenne d'une série de valeurs.
- ✓Faire le lien entre fréquence observée et probabilité (loi des grands nombres).
Des tirages dans une liste
Pour simuler une expérience aléatoire en classe, on travaille ici sur une liste de tirages déjà obtenus (le hasard a été « joué » ailleurs, on nous donne le résultat) :
tirages = [1, 6, 3, 6, 2, 6, 4] # 7 lancers d'un déLe nombre total de tirages est len(tirages). Un succès est un tirage qui réalise l'événement étudié (par exemple « obtenir un 6 »).
Pour compter les succès, on parcourt la liste et on incrémente un compteur :
n6 = 0
for t in tirages:
if t == 6:
n6 = n6 + 1
# n6 vaut 3Avec tirages = [1, 6, 3, 6, 2, 6, 4] : il y a 7 tirages au total et 3 fois la valeur 6.
Travailler sur une liste imposée rend le résultat reproductible : deux personnes qui exécutent le même code trouvent exactement le même compte, ce qui est pratique pour vérifier.
Fréquence d'une valeur
La fréquence d'une valeur est la part qu'elle représente :
tirages = [1, 6, 3, 6, 2, 6, 4]
n6 = 0
for t in tirages:
if t == 6:
n6 = n6 + 1
frequence = n6 / len(tirages) # 3 / 7 ≈ 0.4286Une fréquence est toujours entre 0 et 1. Multipliée par 100, elle donne un pourcentage.
⭐ Pour les curieux — pourquoi ça marche ? Pourquoi une fréquence est-elle forcément entre et ? Le nombre de succès ne peut ni descendre sous (on ne compte jamais en négatif) ni dépasser le nombre total de tirages (un succès est lui-même un tirage). Donc dans , le numérateur est toujours plus petit (ou égal) que le dénominateur : la fraction vaut si on n'a jamais le succès, si on l'a à chaque fois, et reste coincée entre les deux le reste du temps. Une fréquence, c'est une part d'un tout, et une part ne peut pas dépasser le tout.
Pour calculer une fréquence :
- compter les succès (numérateur) ;
- compter le total avec
len(dénominateur) ; - diviser avec
/(jamais//, sinon on perd les décimales).
Sur [0, 1, 1, 0, 1] (1 = pile), il y a 3 piles sur 5 lancers : la fréquence de pile est 3 / 5 = 0.6, soit 60 %.
Attention à la division : 3 / 5 vaut 0.6 (bon) mais 3 // 5 vaut 0 (faux !). Pour une fréquence, on utilise toujours /.
Estimer une probabilité
La loi des grands nombres dit que, sur un grand nombre de tirages, la fréquence observée d'un événement se rapproche de sa probabilité. On peut donc estimer une probabilité par une fréquence :
def estime_proba(tirages, succes):
favorables = 0
for t in tirages:
if t == succes:
favorables = favorables + 1
return favorables / len(tirages)Plus la liste de tirages est longue, plus l'estimation est fiable. Sur quelques lancers, la fréquence peut être loin de la probabilité ; sur des milliers, elle s'en approche.
Un dé équilibré : P(6) = 1/6 ≈ 0,167. Sur 7 lancers on peut trouver 3/7 ≈ 0,43 (peu fiable) ; sur 6000 lancers on trouverait une fréquence très proche de 0,167.
Fréquence = ce qu'on observe ; probabilité = ce qu'on prévoit en théorie. Elles se rapprochent quand le nombre de tirages augmente, mais ne sont presque jamais exactement égales.
Moyenne d'une série
La moyenne d'une série de valeurs est la somme divisée par l'effectif :
valeurs = [12, 9, 15, 8, 16]
moyenne = sum(valeurs) / len(valeurs) # 60 / 5 = 12.0C'est exactement la même structure qu'une fréquence : un total divisé par un effectif.
⭐ Pour les curieux — pourquoi ça marche ? « Même structure » qu'une fréquence : ce n'est pas une coïncidence, c'est littéralement la même chose dans un cas. Code un lancer de pièce par pour pile et pour face, par exemple . La somme ne fait qu'additionner les : elle compte les piles ! Donc est à la fois la moyenne de la liste et la fréquence de pile. Une fréquence est donc une moyenne déguisée : la moyenne d'une liste de et de .
Pour la moyenne d'une liste L non vide : sum(L) / len(L). Si tu ne veux pas utiliser sum, additionne les éléments un par un dans une boucle, puis divise par len(L).
Notes [8, 12, 16] : somme 36, effectif 3, moyenne 36 / 3 = 12.0.
Comme pour la fréquence : on divise avec /. Et attention à ne pas diviser par 0 : la moyenne d'une liste vide n'a pas de sens.
Compter avec un dictionnaire
Pour obtenir d'un coup l'effectif de chaque valeur, on utilise un dictionnaire de comptage : la clé est la valeur, la valeur associée est son effectif :
tirages = [1, 6, 3, 6, 2, 6]
effectifs = {}
for t in tirages:
if t in effectifs:
effectifs[t] = effectifs[t] + 1
else:
effectifs[t] = 1
# effectifs vaut {1: 1, 6: 3, 3: 1, 2: 1}Le réflexe « première rencontre / déjà vu » :
- si la valeur est déjà une clé, on ajoute 1 à son effectif ;
- sinon, on crée la clé avec l'effectif
1.
Sur ['pile', 'face', 'pile'], le dictionnaire d'effectifs vaut {'pile': 2, 'face': 1}. La somme des effectifs redonne le nombre total de tirages.
if t in effectifs teste si t est déjà une clé : c'est ce qui évite l'erreur KeyError quand on rencontre une valeur pour la première fois.
Tu as lu le cours ? Passe à la pratique.
Un coach IA te guide sans jamais donner la réponse, avec des exercices et des quiz sur ce chapitre. Version d'essai gratuite, sans limite de durée.
S'entraîner avec le coach IA — gratuit