Adloun

Le paradoxe des anniversaires

Exercice · niveau 3 (difficile) · mathématiques appliquées (ECG 1re année), chapitre 6 — Probabilités et statistiques · Calculer une probabilité

Énoncé

Le paradoxe des anniversaires. Écrire une fonction Python qui calcule la probabilité qu'au moins deux personnes parmi partagent leur date de naissance. À partir de quel dépasse-t-elle ? Comparer à une simulation.

Corrigé


import numpy.random as rd

def p_anniversaire(n):
    # p = probabilite que les n dates soient DEUX A DEUX DISTINCTES
    p = 1.0
    for k in range(n):
        p = p * (365 - k) / 365
    return 1 - p

def simulation(n, tirages=100000):
    succes = 0
    for _ in range(tirages):
        dates = [rd.randint(0, 365) for _ in range(n)]
        if len(set(dates)) < n:
            succes = succes + 1
    return succes / tirages

Le calcul passe par l'événement contraire : que les dates soient deux à deux distinctes. La première personne est libre, la deuxième doit éviter date, la troisième , et ainsi de suite :

Le seuil est : la probabilité y vaut , contre pour . La simulation sur tirages donne environ à près — compatible.

Pourquoi cela surprend. On pense au nombre de personnes ( pour jours), alors que ce qui compte est le nombre de paires : , du même ordre que . La question « quelqu'un partage-t-il mon anniversaire ? » est tout autre, et demande personnes pour atteindre une chance sur deux.

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.