Adloun

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.