Kategorier
Python

Låt oss analysera födelsedagsparadoxen med Python

Sannolikheten att det i en grupp av 23 personer finns minst två personer som delar födelsedag är över 50 %. Oväntat?

På Wikipedia beskrivs födelsedagsparadoxen som ”det för många intuitivt oväntade faktum, att sannolikheten är större än femtio procent för att det i en grupp om 23 slumpmässigt utvalda personer finns minst två med samma födelsedag”.

Spontant kändes det faktiskt oväntat. Jag illustrerade problemet med Python, och då kändes det genast lite klarare. Knepet är att vända på frågan och tänka: hur stor är sannolikheten för att det i en grupp av ett givet antal slumpmässigt utvalda personer, inte finns någon som delar födelsedag. Den sannolikheten minskar snabbt med ökat antal personer. På samma sätt ökar sannolikheten för att minst två personer ska dela födelsedag snabbt med ökat antal personer. Men helt säkra kan vi förstås inte vara förrän antal personer överstiger antalet dagar på ett år.

from matplotlib import pyplot as plt
import numpy as np

DAYS_IN_A_YEAR = 365

def probability_birthday_problem(number_of_people):

    if number_of_people > DAYS_IN_A_YEAR:
        return 1
    else:
        return 1 -  np.prod([float(i)/DAYS_IN_A_YEAR for i in range(DAYS_IN_A_YEAR, DAYS_IN_A_YEAR - number_of_people, -1)])


x = range(1, 100)
y = [probability_birthday_problem(i) for i in x]

plt.scatter(x,y)
plt.xlabel('Antal personer')
plt.ylabel('Sannolikhet för att två personer delar födelsedag')
plt.show()
Diagram som illustrerar födelsedagsparadoxen.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *