Simuler une binomiale
Exercice · niveau 3 (difficile) · mathématiques appliquées (ECG 1re année), chapitre 10 — Probabilités — variables aléatoires réelles · Simulation
Énoncé
Écrire une fonction Python qui simule une loi binomiale à partir de tirages de Bernoulli, et comparer sur simulations la distribution empirique aux probabilités théoriques pour , .
Corrigé
import numpy.random as rd
from math import comb
def bernoulli(p):
return 1 if rd.random() < p else 0
def binomiale(n, p):
# une binomiale EST une somme de n Bernoulli : on ecrit la definition
return sum(bernoulli(p) for _ in range(n))
def comparer(n, p, tirages=100000):
effectifs = [0] * (n + 1)
for _ in range(tirages):
effectifs[binomiale(n, p)] += 1
for k in range(n + 1):
empirique = effectifs[k] / tirages
theorique = comb(n, k) * p**k * (1 - p)**(n - k)
print(k, round(empirique, 4), round(theorique, 4))
Ce qu'on observe pour , : les deux colonnes coïncident à environ près, le mode étant en () et la moyenne empirique proche de .
L'ordre de grandeur de l'écart. Chaque fréquence empirique est elle-même une variable de moyenne et d'écart-type . Pour et , cela donne : les écarts constatés sont donc normaux, et non le signe d'une erreur. Un écart de , lui, mériterait qu'on relise le code.
Ce que la simulation prouve — et ne prouve pas. Elle conforte, elle chiffre, elle sert de garde-fou contre une erreur de calcul. Elle ne démontre rien : la loi des grands nombres garantit la convergence, pas l'exactitude d'un tirage fini.
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.