Home

Das Geburtstagsparadoxon

Fragestellung

Wie viele Personen sind erforderlich damit die Wahrscheinlichkeit über 50% liegt, dass zwei Personen am selben Tag Geburtstag haben?

  • Zur Vereinfachung wird von 365 Tagen pro Jahr ausgegangen, d.h. Schaltjahre werden ignoriert.
  • Wenn zwei Personen an einem Tag Geburtstag haben wird dies als "Treffer" bennant.

Lösungsweg

Wenn PersonA den Raum betritt und noch ganz alleine is, kann es noch zu keinem Treffer kommen. Daher sind alle 365 Tage Treffer frei. $$ 365 $$

Wenn PersonB den Raum betritt muss dessen Geburtstag an genau dem selben Tag liegen wie bei PersonA damit es zu einem Treffer kommt. D.h. für PersonB gibt es noch 364 trefferfreie Tage. $$ 364 $$

Wenn PersonC den Raum betritt muss dessen Geburstag an genau dem selben Tag liegen wie bei PersonA oder PersonB damit es zu einem Treffer kommt: $$ 363 $$

Dieses Vorgehen lässt sich für alle weiteren Personen so fortsetzen. Mit jeder in den Raum kommenden Person nimmt die Anzahl an trefferfreien Tagen ab.

Diess Vorghen lässt sich mittels einer Formel ausdrücken.

\begin{align*} p=1-\frac{365 * 364 * ... * (365-(n-1))}{365^n} \end{align*}

Implementierung

In [40]:
import pandas as pd

def prob(persons):
    days = 365
    u = 1
    m = days ** persons
    for n in range(0,persons):
        u *= (days - n)
    probability = 1-u/m
    return probability

Visualisierung - Tabelle

In [41]:
x = list()
y = list()
for person in range(0, 25):
    probability = prob(person)
    x.append(person)
    y.append(probability)

df = pd.DataFrame(list(zip(x,y)), columns=["Personen", "Wahrscheinlichkeit"])
print(df)
    Personen  Wahrscheinlichkeit
0          0            0.000000
1          1            0.000000
2          2            0.002740
3          3            0.008204
4          4            0.016356
5          5            0.027136
6          6            0.040462
7          7            0.056236
8          8            0.074335
9          9            0.094624
10        10            0.116948
11        11            0.141141
12        12            0.167025
13        13            0.194410
14        14            0.223103
15        15            0.252901
16        16            0.283604
17        17            0.315008
18        18            0.346911
19        19            0.379119
20        20            0.411438
21        21            0.443688
22        22            0.475695
23        23            0.507297
24        24            0.538344

Visualisierung - Grafik

In [42]:
import matplotlib.pyplot as plt
x = []
y = []
for person in range(0, 100):
    probability = prob(person)
    x.append(person)
    y.append(probability)
In [43]:
plt.scatter([23], [prob(23)])
plt.plot(x, y, color='red')
plt.xlabel("Personen")
plt.ylabel("Wahrscheinlichkeit")
plt.show()

Ergebnis

Sowohl aus der Tabelle als auch dem Graphen lässt sich erkennen, dass bei einer Personenanzahl von 23 die Wahrscheinlichkeit über 50% liegt.

Impressum