Le paradoxe des anniversaires

Présentation & modélisation du paradoxe des anniversaires
Mardi 14 juillet 2020

Voici un paradoxe très connu : si l’on prend 23 personnes au hasard, il y a 50% de chance que 2 personnes aient leur anniversaire le même jour !

Surprenant non ? Eh oui ! Nous allons voir ce que disent les mathématiciens, et ensuite nous allons vouloir tester nous-mêmes avec un petit algorithme voir si tout ça est vrai !

Approche en formant des “paires”

Une approche intuitive serait de vouloir faire des paires avec toutes les personnes dans la pièce :

  • Si nous avons 2 personnes, nous pouvons réaliser 1 paire

  • Si nous avons 3 personnes A-B-C, il y a 3 paires:

    • A - B
    • A - C
    • B - C
  • Si nous avons 4 personnes A - B - C - D, il y a 6 paires:

    • A - B
    • A - C
    • A - D
    • B - C
    • B - D
    • C - D
  • Si nous avons 5 personnes A - B - C - D - E, il y a 10 paires:

    • A - B
    • A - C
    • A - D
    • A - E
    • B - C
    • B - D
    • B - E
    • C - D
    • C - E
    • D - E

Si nous continuons, nous arriverons à la conclusion: le nombre de paires avec des éléments distincts est de (n x (n-1)) / 2.

Arrivé à 23 personnes, nous pouvons réaliser 23 x 22 / 2 = 253 paires possibles, ce qui représente plus de la moitié du nombre de jours dans une année (365).

Arrivé à 28 personnes, nous avons 28 x 27 / 2 = 378 paires possibles, ce qui est plus que le nombre de jours dans une année !

En réalité, cette approche n’est pas juste, elle donne simplement une intuition du problème : elle est fausse car cela reviendrait à additionner les probabilités d’événements qui ne sont pas disjoints. Nous savons maintenant en revanche qu’il y a beaucoup de liens probables entre les personnes.

Modélisation naïve

Ici nous allons voir pour l’instant une approche naïve du problème:

// retourne "vrai" si 2 elements du tableau sont identiques
const duplicataDansTableau = (tab) => {
return tab.some((val, i) => tab.indexOf(val) !== i)
}
// Fonction qui génère une salle de 23 personnes et qui regarde si deux personnes
// ont leurs anniversaires au même moment
const simulation_anniversaire = () => {
// Ici nous remplissons le tableau d'entiers aléatoires de 1 à 365 inclus.
let anniversaires = new Array(23).fill(null).map(el => {
return Math.floor(Math.random() * 365) + 1;
})
// Si, parmis ces 23 nombres, 2 sont égaux, alors il y a un succes
return duplicataDansTableau(anniversaires)
}
let succes = 0
let nb_experiences = 100000
for(let i=1; i<=nb_experiences; i++) {
let experience_reussie = simulation_anniversaire()
if (experience_reussie) {
succes++
}
}
console.log("La probabilité si 2 personnes ont leurs anniversaires en même temps parmi 23 personnes:", succes / nb_experiences)

Lorsque nous exécutons cet algorithme, nous obtenons ≈50.729% !

Note: Si vous êtes sur ordinateur, nous pouvez tester cet algorithme en appuyant sur le raccourci clavier CTRL+MAJ+J (ou CMD+MAJ+J sur mac) et en copiant/collant le code dans la console qui s’affiche.

Approche mathématique

Calculs de probabilités

Pour calculer la probabilité que deux événements indépendants se produisent en même temps, il faut multiplier la première probabilité par la seconde.

Prenons ici 2 événements indépendants : si nous lançons une pièce (pile-face) deux fois d’affilée et que nous voulons avoir la probabilité qu’elle tombe deux fois sur face, nous faisons :

(la probabilité qu’elle atteigne “pile”) x (la probabilité qu’elle atteigne “pile”),

Soit: ½ x ½ = ¼ chances !

Explication du problème des anniversaires

Prenons ici le problème à l’envers: calculons la probabilité que 2 personnes n’aient pas le même jour d’anniversaire dans un groupe de x personnes:

  • La première personne à 365/365 possibilités de dates d’anniversaire
  • La deuxième personne à 364/365 possibilités de dates d’anniversaire
  • La troisième personne à 363/365 possibilités de dates d’anniversaire
  • La quatrième personne à 362/365 possibilités de dates d’anniversaire
  • etc…

Pour que toutes ces probabilités aient lieu en même temps, alors il faut multiplier toutes ces probabilités entre elles, ce qui donne le calcul suivant:

(364 / 365) x (363 / 365) x (362 / 365) x (362 / 365) …

Et pour que cette probabilité soit à 50%, il faut calculer jusqu’au 23ème terme seulement ! Soit (364 / 365) x (363 / 365) x (362 / 365) x … x (343 / 365) ≈ 50.729% !

Modélisation

let personne = (n) => (365 - n + 1) / 365;
let probabilite = 1;
console.log(
"Calcul de probabilités pour que x personnes n'aient pas leurs anniversaires en même temps:"
);
for (let i = 1; i <= 30; i++) {
probabilite = probabilite * personne(i);
console.log(
"La probabilité pour",
i,
"personne(s) est",
probabilite,
"(1-p =",
1 - probabilite,
")"
);
}
// console.log(personne(1) _ personne(2) _ personne(3) _ personne(4) _ personne(5) _ personne(6) _ personne(7) _ personne(8) _ personne(9) _ personne(10) _ personne(11) _ personne(12) _ personne(13) _ personne(14) _ personne(15) _ personne(16) _ personne(17) _ personne(18) _ personne(19) _ personne(20) _ personne(21) _ personne(22) _ personne(23))

Note: Si vous êtes sur ordinateur, nous pouvez tester cet algorithme en appuyant sur le raccourci clavier CTRL+MAJ+J (ou CMD+MAJ+J sur mac) et en copiant/collant le code dans la console qui s’affiche.

Et nous obtenons les résultats suivants:

Calcul de probabilités pour que x personnes n’aient pas leurs anniversaires en même temps:

La probabilité pour 1 personne(s) est 1 (1-p = 0 )
La probabilité pour 2 personne(s) est 0.9972602739726028 (1-p = 0.002739726027397249 )
La probabilité pour 3 personne(s) est 0.9917958341152187 (1-p = 0.008204165884781345 )
La probabilité pour 4 personne(s) est 0.9836440875334498 (1-p = 0.016355912466550215 )
La probabilité pour 5 personne(s) est 0.9728644263002065 (1-p = 0.02713557369979347 )
La probabilité pour 6 personne(s) est 0.9595375163508886 (1-p = 0.040462483649111425 )
La probabilité pour 7 personne(s) est 0.9437642969040246 (1-p = 0.056235703095975365 )
La probabilité pour 8 personne(s) est 0.925664707648331 (1-p = 0.07433529235166902 )
La probabilité pour 9 personne(s) est 0.9053761661108333 (1-p = 0.09462383388916673 )
La probabilité pour 10 personne(s) est 0.8830518222889223 (1-p = 0.11694817771107768 )
La probabilité pour 11 personne(s) est 0.8588586216782669 (1-p = 0.14114137832173312 )
La probabilité pour 12 personne(s) est 0.8329752111619355 (1-p = 0.1670247888380645 )
La probabilité pour 13 personne(s) est 0.8055897247675705 (1-p = 0.19441027523242949 )
La probabilité pour 14 personne(s) est 0.7768974879950269 (1-p = 0.2231025120049731 )
La probabilité pour 15 personne(s) est 0.7470986802363135 (1-p = 0.25290131976368646 )
La probabilité pour 16 personne(s) est 0.7163959947471499 (1-p = 0.2836040052528501 )
La probabilité pour 17 personne(s) est 0.6849923347034391 (1-p = 0.3150076652965609 )
La probabilité pour 18 personne(s) est 0.6530885821282104 (1-p = 0.3469114178717896 )
La probabilité pour 19 personne(s) est 0.620881473968463 (1-p = 0.37911852603153695 )
La probabilité pour 20 personne(s) est 0.5885616164194197 (1-p = 0.41143838358058027 )
La probabilité pour 21 personne(s) est 0.556311664834794 (1-p = 0.443688335165206 )
La probabilité pour 22 personne(s) est 0.5243046923374497 (1-p = 0.4756953076625503 )
La probabilité pour 23 personne(s) est 0.4927027656760144 (1-p = 0.5072972343239857 )
La probabilité pour 24 personne(s) est 0.46165574208547105 (1-p = 0.538344257914529 )
La probabilité pour 25 personne(s) est 0.431300296030536 (1-p = 0.568699703969464 )
La probabilité pour 26 personne(s) est 0.4017591798640609 (1-p = 0.598240820135939 )
La probabilité pour 27 personne(s) est 0.37314071773675794 (1-p = 0.6268592822632421 )
La probabilité pour 28 personne(s) est 0.3455385276576005 (1-p = 0.6544614723423995 )
La probabilité pour 29 personne(s) est 0.3190314625222229 (1-p = 0.6809685374777771 )
La probabilité pour 30 personne(s) est 0.2936837572807312 (1-p = 0.7063162427192688 )

Je vous laisse ici dérouler l’algorithme de votre côté si vous voulez vérifier les chiffres.

Rangé dans un tableau, cela donne:

np(n)
52,71 %
1011,69 %
1525,29 %
2041,14 %
2350,73 %
2556,87 %
3070,63 %
4089,12 %
5097,04 %
6099,41 %
8099,99 %
10099,99997 %
> 365100 % (par le principe des tiroirs)

Il faut au moins 366 personnes pour obtenir 100% de chances pour que deux personnes dans le lot aient leurs anniversaires au même moment ! (nombre de jours dans l’année + 1). Et donc au moins 367 pour une année bissextile!

Il n’en faut que 23 pour avoir une chance sur deux !

Surprenant non ?


Articles recommandés