Adloun

Le paradoxe des anniversaires, simulé puis calculé

Exercice · niveau 2 · mathématiques approfondies (ECG 1re année), chapitre 11 — Informatique et algorithmique · Simuler une loi, estimer une probabilité

Énoncé

Estimer par simulation la probabilité que, parmi personnes, deux au moins soient nées le même jour — année de jours, dates équiprobables et indépendantes — puis comparer à la valeur exacte.

Corrigé


import numpy as np
import numpy.random as rd

def coincidence(n):
    # rend 1 s'il y a au moins deux dates egales parmi n, 0 sinon
    t = rd.randint(0, 365, n)
    for i in range(n):
        for j in range(i + 1, n):
            if t[i] == t[j]:
                return 1
    return 0

N = 100000
s = 0
for r in range(N):
    s = s + coincidence(23)
print(s / N)                  # environ 0.507

p = 1.0
for k in range(23):
    p = p * (1 - k / 365)     # toutes les dates distinctes
print(1 - p)                  # 0.5072972...

Le calcul exact. L'événement contraire est « les dates sont deux à deux distinctes ». En plaçant les personnes une à une, la -ième doit éviter les dates déjà prises :

d'où la probabilité cherchée — au-delà d'une chance sur deux avec seulement personnes, ce qui est le « paradoxe » : les comparaisons sont au nombre de , pas .

L'accord. La simulation rend à quelques millièmes près, et pas mieux : la fréquence sur tirages a pour écart-type .

Le point à retenir. Ce que la simulation apporte n'est pas la valeur — le calcul exact la donne mieux — mais la confiance : deux chemins indépendants qui aboutissent au même nombre valident le modèle. Et c'est la loi faible des grands nombres qui autorise à lire une probabilité sur une fréquence.

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.