Une fréquence, et la probabilité exacte
Exercice supplémentaire · niveau 1 (application) · mathématiques approfondies (ECG 1re année), chapitre 11 — Informatique et algorithmique · Simulation
Énoncé
Soit . Estimer par simulation sur tirages, puis la calculer exactement par un programme n'employant que des boucles. Comparer les deux résultats.
Corrigé
Ce qu'on montre. Que la simulation et le calcul exact se contrôlent l'un l'autre, et que la loi binomiale se calcule par récurrence, sans coefficient binomial explicite.
La récurrence. Pour et , en simplifiant les factorielles et les puissances. On part donc de et l'on avance de proche en proche.
Le programme.
import numpy as np
import numpy.random as rd
# --- par simulation
X = rd.binomial(10, 0.3, 10 ** 6)
print(np.mean(X >= 3)) # ~0.6172
# --- exactement
def proba_au_moins(n, p, m):
"""P(X >= m) pour X binomiale(n, p), par recurrence sur la loi."""
q = (1 - p) ** n # P(X = 0)
cumul = q
for k in range(m - 1): # ajoute P(X=1), ..., P(X=m-1)
q = q * (n - k) / (k + 1) * p / (1 - p)
cumul = cumul + q
return 1 - cumul
print(proba_au_moins(10, 0.3, 3)) # 0.617219...
Le calcul à la main. Leur somme vaut , donc
La comparaison. La simulation sur tirages affiche une valeur voisine de . L'écart-type de cette fréquence vaut : les deux résultats doivent coïncider sur trois décimales, ce qu'on observe.
Point délicat. La boucle parcourt range(m - 1), soit , ce qui ajoute à la valeur initiale : on cumule bien . Écrire range(m) ajouterait un terme de trop et renverrait — erreur silencieuse, que seule la comparaison avec la simulation révélerait.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.