mathématiques appliquées (ECG 1re année) · Chapitre 11 · Exercice
Simuler deux dés, et comparer
Informatique et algorithmique · Simulation et données · niveau 2
Énoncé
Simuler lancers de deux dés et comparer la fréquence de chaque somme à sa probabilité théorique. Tracer les deux sur un même diagramme en bâtons.
Corrigé
import numpy.random as rd
import matplotlib.pyplot as plt
def simuler(tirages=100000):
effectifs = {s: 0 for s in range(2, 13)}
for _ in range(tirages):
s = rd.randint(1, 7) + rd.randint(1, 7)
effectifs[s] += 1
return {s: effectifs[s] / tirages for s in effectifs}
sommes = list(range(2, 13))
theorique = {s: (6 - abs(s - 7)) / 36 for s in sommes}
empirique = simuler()
plt.bar([s - 0.2 for s in sommes], [empirique[s] for s in sommes],
width=0.4, label="frequences simulees")
plt.bar([s + 0.2 for s in sommes], [theorique[s] for s in sommes],
width=0.4, label="probabilites theoriques")
plt.xlabel("somme des deux des"); plt.legend(); plt.show()
Ce qu'on voit : deux profils triangulaires qui se superposent, avec un maximum en () et des extrémités à .
L'écart attendu. Chaque fréquence a un écart-type de ; pour et , cela vaut . Les différences observées sont de cet ordre — les constater ne signale aucune erreur.
Une erreur classique à éviter : tirer une somme directement par random.randint(2, 12) donnerait une loi uniforme, où serait aussi fréquent que . Il faut simuler les deux dés séparément, parce que c'est le nombre de façons d'obtenir chaque somme qui fait le triangle.