De verjaardagsparadox

Philip J. Erdelsky

July 4, 2001

 

original page: http://www.efgh.com/math/birthday.htm

 

Stuur opmerkingen, correcties en toevoegingen per e-mail op naar de webmaster. pje@efgh.com.

In elementaire kans- en statistiekcursussen is het verjaardagprobleem een favoriet probleem: Wat is de kans dat minstens twee van N willekeurig geselecteerde mensen dezelfde verjaardag hebben? (Dezelfde maand en dag, maar niet noodzakelijkerwijs hetzelfde jaar.)

Een tweede deel van het probleem: hoe groot moet N zijn, zo dat de kans groter is dan 50 procent? Het antwoord is 23 en dat is voor de meeste mensen onredelijk klein. Om deze reden wordt het probleem vaak de verjaardagsparadox genoemd.

Sommige slimmeriken stellen weddenschappen voor, zelfs voor geld, dat er dubbele verjaardagen zijn onder een groep van 23 of meer personen. Vermoedelijk zijn er enkele slecht geïnformeerde sukkels die de weddenschap accepteren.

Het probleem wordt meestal vereenvoudigd door twee dingen te veronderstellen:

  1. Niemand is geboren op 29 februari.
    2. De verjaardagen van mensen worden gelijk verdeeld over de andere 365 dagen van het jaar.

Een van de eerste dingen die opvalt aan dit probleem, is dat het veel eenvoudiger is om het aanvullende probleem op te lossen: Wat is de kans dat N willekeurig geselecteerde mensen allemaal verschillende verjaardagen hebben? We kunnen dit schrijven als een recursieve functie:

dubbele verschillende_verjaardagen(int n)
{
terugkeer n == 1? 1.0: verschillende_verjaardagen(n-1) * (365.0- (n-1)) / 365.0;
}

Vanzelfsprekend is voor N = 1 de kans 1. Voor N> 1 is de kans het product van twee kansen:
1. Dat de eerste N-1 mensen allemaal verschillende verjaardagen hebben.
2. Dat de N-de persoon een andere verjaardag heeft dan de eerste N-1.
Een programma om de kansen weer te geven gaat ongeveer als volgt:

void main (void)
{
int n;
voor (n = 1; n <= 365; n ++)
printf (“% 3d:% e \ n”, n, 1.0-verschillende_verjaardagen (n));

 

Het resultaat is zoiets als dit:

1: 0.000000e+00

2: 2.739726e-03

3: 8.204166e-03

4: 1.635591e-02

5: 2.713557e-02

***

20: 4.114384e-01

21: 4.436883e-01

22: 4.756953e-01

23: 5.072972e-01

24: 5.383443e-01

25: 5.686997e-01

***

 

De kans dat minstens twee van de N-mensen dezelfde geboortedatum hebben, stijgt boven de 0,5 wanneer N = 23.

MAAR HOE NU MET EEN SCHRIKKEL JAAR?

Het oorspronkelijke probleem kan worden opgelost met een rekenliniaal, dat is precies wat ik gedaan heb toen ik het vele jaren geleden voor het eerst hoorde.

Als we 29 februari aan de mix toevoegen, wordt het aanzienlijk ingewikkelder. In dit geval maken we een aantal aanvullende aannames:

  1. Gelijke aantallen mensen worden geboren op andere dagen dan 29 februari.
    2. Het aantal mensen geboren op 29 februari is een vierde van het aantal mensen dat op een andere dag wordt geboren.

Vandaar dat de kans dat een willekeurig geselecteerde persoon werd geboren op 29 februari, 0,25/365,25 is, en de kans dat een willekeurig geselecteerde persoon op een andere gespecificeerde dag werd geboren, 1/365,25 is.

De kans dat N-personen, waaronder mogelijk één geboren op 29 februari, verschillende verjaardagen hebben, is de som van twee kansen:

  1. Dat de N personen op N verschillende dagen zijn geboren maar niet op 29 februari.
  2. Dat de N personen op N verschillende dagen zijn geboren, met één persoon die op 29 februari geboren is.

De waarschijnlijkheden worden toegevoegd omdat de twee cases elkaar uitsluiten.

Nu kan elke waarschijnlijkheid recursief worden uitgedrukt:

dubbele verschillende_verjaardagen_zonder_Feb_29 (int n)
{
terugkeer n == 1? 365.0/365.25 :
verschillende_verjaardagen_zonder_Feb_29 (n-1) * (365.0-(n-1)) / 365.25;
}

dubbele verschillende_verjaardagen_inclusief_Feb_29(int n)
{
terugkeer n == 1? 0.25 / 365.25:
verschillende_verjaardagen_inclusief_Feb_29 (n-1) * (365.0- (n-2)) / 365.25 +
verschillende_verjaardagen_zonder_Feb_29 (n-1) * 0,25 / 365,25;

 

Een programma om de kansen weer te geven gaat ongeveer als volgt:

void main (void)
{
int n;
voor (n = 1; n <= 366; n ++)
printf (“% 3d:% e \ n”, n, 1.0-verschillende_verjaardagen_exclusief_Feb_29 (n) –
verschillende_verjaardagen_inclusief_Feb_29 (n));

 

Het resultaat is zoiets als dit:

1: -8.348357e-18

2: 2.736445e-03

3: 8.194354e-03

4: 1.633640e-02

5: 2.710333e-02

***

20: 4.110536e-01

21: 4.432853e-01

22: 4.752764e-01

23: 5.068650e-01

24: 5.379013e-01

25: 5.682487e-01

***

 

Zoals verwacht, liggen de kansen iets lager, omdat de waarschijnlijkheid op het matchen van verjaardagen lager is wanneer er meer mogelijke verjaardagen zijn. Maar het kleinste getal met een kans groter dan 0,5 is nog steeds 23.

Natuurlijk kan een wiskundige beweren dat schrikkeljaren niet altijd om de vier jaar plaats vinden, en dus de berekeningen verder moeten worden aangepast. Echter, het laatste vierjaarlijkse jaar dat geen schrikkeljaar was, was 1900 en de volgende is 2100. Het aantal mensen dat in 1900 geboren is en nu nog leeft, is zo klein dat ik denk dat onze benadering geldig is voor alle praktische doeleinden. Maar u bent natuurlijk meer dan welkom om de vereiste wijzigingen aan te brengen als u dat wenst.

De verjaardagsparadox heeft implicaties die verder gaan dan de wereld van de weddenschappen. Een standaardtechniek in gegevensopslag is om elk item een ​​nummer toe te wijzen dat een hash-code wordt genoemd. Het item wordt vervolgens opgeslagen in een bak die overeenkomt met de hash-code. Dit versnelt het ophalen omdat slechts één enkele bak doorzocht moet worden. De verjaardagparadox laat zien dat de kans dat twee of meer items in dezelfde bak belanden hoog is, zelfs als het aantal items aanzienlijk kleiner is dan  het aantal bakken. Daarom is een efficiënte afhandeling van bakken met twee of meer artikelen in alle gevallen vereist.

 

Een Tsjechische vertaling van dit artikel is beschikbaar op www.pkwteile.de/wissen/narozeniny-paradox

Een Franse vertaling van dit artikel is beschikbaar op www.autoteiledirekt.de/science/le-paradoxe-de-lanniversaire.

Een Indonesische vertaling van dit artikel is beschikbaar op www.chameleonjohn.com/translations/birthday-Indonesian.

Een Ierse vertaling van dit artikel is beschikbaar op www.travel-ticker.com/translations/birthday-paradox.

Een Russische vertaling van dit artikel is beschikbaar op bestreviewsbase.com/translations/#the-birthday-paradox:RU.

Een Portugese vertaling van dit artikel is beschikbaar op  1001-soldes.com/traductions/birthday.htm

Een Portugese vertaling van dit artikel is beschikbaar op www.homeyou.com/~edu/o-paradoxo-de-aniversario.

Een Bulgaarse vertaling van dit artikel is beschikbaar op bookieboost.com/9-birthday-bg.

Een Oekraïense vertaling van dit artikel is beschikbaar op https://indepthguide.com/translations/#doc-uk:the-birthday-paradox.