Verjaardagsparadox

Het Verjaardagsprobleem (Verjaardagsparadox) probeert de kans te vinden dat onder een groep van n personen, 2 of meer van hen dezelfde verjaardag hebben. Voor de eenvoud negeert het het bestaan van schrikkeljaren en het feit dat geboorten seizoensgebonden zijn.

Lex Fridman plaatste ooit de volgende tweet:

@lexfridman: In een kamer met 23 mensen is er 50% kans dat twee mensen dezelfde verjaardag hebben.

Ik probeerde het te berekenen met kansen, maar mijn brein vindt het meestal moeilijk om dat te doen. Natuurlijk zou ik de Wikipedia-pagina kunnen raadplegen en de berekeningen daarvan kopiëren, maar ik geef de voorkeur aan het gebruik van mijn favoriete tool, de machtige Monte Carlo-methoden.

Fuck wiskunde! Fuck kansen! We hebben goedkope CPU's om dit voor ons te doen. Ik heb het probleem in principe gesimuleerd en de kansen zelf berekend.

We krijgen 23 mensen, wijzen elk van hen een willekeurige verjaardag toe en controleren of twee of meer van hen dezelfde verjaardag hebben. En aangezien we onze computers tot onze beschikking hebben, kunnen we dit proces een miljoen keer herhalen, wie maakt het uit!

Het kostte me een paar minuten om Fridman's tweet te bewijzen, en om precies te zijn, in een kamer met 23 mensen is er een 50,7% kans dat twee mensen dezelfde verjaardag hebben.

Hier is de code:

  1 import numpy as np
  2 import pandas as pd
  3
  4 collisions = []
  5
  6 for i in range(1_000_000):
  7         birthdays = np.random.choice(range(1, 366), 23)
  8         collision = len(birthdays) > len(set(birthdays))
  9         collisions.append(collision)
 10
 11 print(
 12         '% of collisions: {:.1%}'.format(
 13                 pd.Series(collisions).mean()
 14         )
 15 )

Kun je het parallel uitvoeren?


Tarek Amr - 3 maart 2021

Vertalingen: [EN], [AR]