Wat is de kans dat er in een groep van n willekeurige personen minstens twee personen dezelfde verjaardag hebben? Je zou het misschien niet verwachten maar voor een groep van slechts 23 personen is deze kans reeds groter dan 50%. Bij 57 personen is de kans zelfs als meer dan 99%. Dit is het typevoorbeeld van een paradox die men in de kansrekening de verjaardagsparadox is gaan noemen en die een resultaat toont dat tegen de intuïtie ingaat.

Stel algemeen dat een bepaald type gebeurtenis m mogelijke uitkomsten heeft. Zo kun je bijvoorbeeld met een dobbelsteen de waarden één tot en met zes gooien waardoor in dit geval m = 6, of kan een verjaardag op één van de 365 dagen van het jaar vallen (waarbij we geen rekening houden met schrikkeljaren) waardoor in dit geval $$m = 365$$. Op basis van kansrekening kan men aantonen dat wanneer er zich n gebeurtenissen voordoen, de kans dat minstens twee gebeurtenissen dezelfde uitkomst hebben gelijk is aan \[ P_2(n,m) = 1 - \frac{m!}{(m-n)! m^n} \quad \text{waarbij } m\in\mathbb N, 0\leq n\leq m \] In deze opgave zullen we niet uitgaan van deze formule, maar zullen we de verjaardagsparadox proefondervindelijk aantonen.

Opgave

  1. Schrijf een functie gebeuren_samen die voor een type gebeurtenis met $$m$$ mogelijke uitkomsten, $$n$$ willekeurige uitkomsten genereert en teruggeeft of er zich minstens twee gebeurtenissen met dezelfde uitkomst voordoen (True) of niet (False). De waarden voor $$m$$ en $$n$$ moeten als argumenten aan de functie doorgegegen worden.
    Hint: gebruik een verzameling om gebeurtenissen voor te stellen die zich reeds hebben voorgedaan

  2. Schrijf een functie schat_kans die de kans berekent dat er bij $$n$$ willekeurige gebeurtenissen met $$m$$ mogelijke uitkomsten, minstens twee gebeurtenissen zijn met dezelfde uitkomst. Hierbij moet de functie een aantal keer na elkaar een test uitvoeren waarbij $$n$$ willekeurige uitkomsten gegenereerd worden en telkens wordt nagegaan of er zich uitkomsten meermaals voordoen (waarbij je dus handig gebruik kan maken van de functie gebeuren_samen). De kans wordt dan berekend als het aantal testen waarin bepaalde uitkomsten meermaals voorkwamen gedeeld door het aantal uitgevoerde testen. De waarden voor $$m$$, $$n$$ en het aantal uit te voeren testen moeten als parameter aan de functie doorgegeven worden, en de functie moet de berekende kans als resultaat teruggeven.

Opmerking bij beoordeling: De functies gebeuren_samen en schat_kans zullen getest worden door na te gaan of de geschatte kans voldoende dicht licht bij de exacte kans. Het is dus niet ondenkbaar (maar wel onwaarschijnlijk) dat je broncode helemaal juist is en de test toch faalt. In dat geval kan je gewoon opnieuw inzenden. Dit is per slot van rekening een opgave over kansrekening.

Voorbeeld

>>> gebeuren_samen(6, 3)
True
>>> gebeuren_samen(6, 3)
False
>>> schat_kans(6, 2, 10000)
0.1676
>>> schat_kans(365, 23, 10000)
0.5024