Table des matières
Ceci est une ancienne révision du document !
Paradoxe des anniversaires
Énoncé
- Quelle est la probabilité qu'au moins deux personnes aient leur anniversaire le même jour dans un groupe de 40 personnes ?
Solution
Il est plus simple de passer par le calcul de la probabilité complémentaire Pcomp(N), que toutes les N personnes présentes aient leur anniversaire des jours différents. Si on considère une personne à la fois, on multipliera les probabilités indépendantes d'“avoir un anniversaire un jour différent des personnes précédentes” :
- Pcomp(1) = 1 = 365/365 (trivial pour une seule personne)
- Pcomp(2) = (365/365) * (364/365) (pour la deuxième personne, seuls 364 jours sur 365 sont adéquats pour avoir des dates différentes)
- Pcomp(3) = pcomp(2) * (363/365) = 1 * (364/365) * (363/365) (pour la troisième personne, seuls 363 jours sur 365 sont adéquats pour avoir des dates différentes)
- …
- Pcomp(N) = (365 * 364 * 363 * … * (365 - N + 1)/ (365)^N = (365)! / ( (365-N)! * (365)^N)
Pour 40 personne, la réponse 1-Pcomp(40) = 0.89123
Remarque : discuter de la non-validité de l'approximation de Stirling utilisée.
Programme Python
- multiples-occurences-anniversaires.py
#!/usr/bin/python # -*- coding: UTF-8 -*- """ Petit programme destiné à répondre à la question suivante : - Quelle est la probabilité qu'au moins deux personnes aient leur anniversaire le même jour dans un groupe de 40 personnes. Hypothèses : l'année fait 365 jours et les naissances des personnes se distribuent uniformément (pas de jumeaux,...) Remarque : la solution doit pouvoir être généralisée ! """ from math import log, exp # nombre de possibilités différentes # (= nombre de jours d'une année dans les exemples) poss = 365 # nombre d'items (personnes présentes) n = 40 # solution : p = poss ! / ( (poss-n) ! * poss^n) pcomp = 1. for i in range(poss, poss-n, -1): pcomp = pcomp * i / poss print("calcul exact : ", pcomp, 1.-pcomp) # calcul suivant l'approximation de Stirling ( ln(j!) ~= j ln(j) - j # l'approximation est d'autant plus valable que poss est grand et n << poss pcomps = exp(poss*log(poss)-poss - (poss-n)*log(poss-n) + (poss-n) - n*log(poss)) print("Approximation de Stirling : ", pcomps, 1.-pcomps)
Problème analogue
- Quelle est la probabilité de recevoir 40 cartes cadeaux différentes (aucun “double”) sur 216 types différents de cartes distribuées comme jeu-concours aux caisses d'un supermarché
- Si ce genre d'événement se produit fréquemment, que pouvez-vous en conclure ?
- Discuter des stratégies appliquées par les personnes qui organisent ce genre de jeu-concours
Références
- Using the birthday paradox to teach probability fundamentals - What are the odds that two of your friends share a birthday? Cassie Kozyrkov, Medium, 08/10/2019