Skip to content

Instantly share code, notes, and snippets.

@brouberol
Last active December 22, 2015 20:09
Show Gist options
  • Save brouberol/6524605 to your computer and use it in GitHub Desktop.
Save brouberol/6524605 to your computer and use it in GitHub Desktop.
The birthday paradox - IPython notebook
{
"metadata": {
"name": "birthday-paradox"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The birthday paradox\n",
"\n",
"Given a sample of _n_ people, we would like to calculate the probability _p_ that _at least_ one person has the same birthday than _any_ other person in the group."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Hypotheses\n",
"\n",
"* the probability distribution is uniform\n",
"* all events are independant from each other"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"P(A) is the probability of at least two people sharing the same birthday.\n",
"P(A') is the probability that all birthdays are different.\n",
"\n",
"\\begin{equation}\n",
" P(A') = 1 - P(A)\n",
"\\end{equation}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculating the probability\n",
"\n",
"From [Wikipedia]()\n",
"\n",
"> P(A') could be calculated as P(1) \u00d7 P(2) \u00d7 P(3) \u00d7 ... \u00d7 P(23).\n",
"\n",
"> The 23 independent events correspond to the 20 people, and can be defined in order. Each event can be defined as the corresponding person not sharing his/her birthday with any of the previously analyzed people. For Event 1, there are no previously analyzed people. Therefore, the probability, P(1), that person number 1 does not share his/her birthday with previously analyzed people is 1, or 100%. Ignoring leap years for this analysis, the probability of 1 can also be written as 365/365, for reasons that will become clear below.\n",
" \n",
"> For Event 2, the only previously analyzed people is Person 1. Assuming that birthdays are equally likely to happen on each of the 365 days of the year, the probability, P(2), that Person 2 has a different birthday than Person 1 is 364/365. This is because, if Person 2 was born on any of the other 364 days of the year, Persons 1 and 2 will not share the same birthday.\n",
" \n",
"> Similarly, if Person 3 is born on any of the 363 days of the year other than the birthdays of Persons 1 and 2, Person 3 will not share their birthday. This makes the probability P(3) = 363/365.\n",
" \n",
"> This analysis continues until Person 20 is reached, whose probability of not sharing his/her birthday with people analyzed before, P(20), is 346/365.\n",
" \n",
"> P(A') is equal to the product of these individual probabilities:\n",
"\n",
" (1) P(A') = 365/365 \u00d7 364/365 \u00d7 363/365 \u00d7 362/365 \u00d7 ... \u00d7 346/365\n",
"\n",
"> The terms of equation (1) can be collected to arrive at:\n",
"\n",
" (2) P(A') = (1/365)^23 \u00d7 (365 \u00d7 364 \u00d7 363 \u00d7 ... \u00d7 346)\n",
" = 0.588\n",
"\n",
" (3) P(A) = 1 - P(A') = 0.411 = 41.1%\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generalization\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\\begin{eqnarray}\n",
"P(n') &=& 1 \\times (1 - \\dfrac{1}{365}) \\times (1 - \\dfrac{2}{365}) \\times ... \\times (1 - \\dfrac{n+1}{365}) \\\\\n",
" &=& \\dfrac{365 \\times 364 \\times ... \\times (365 - n + 1)}{365^{n}} \\\\\n",
" &=& \\dfrac{365!}{365^{n} . (365 - n)!}\\\\\n",
"\\end{eqnarray}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{equation}\n",
"P(n) = 1 - P(n') = 1 - \\dfrac{365!}{365^{n} . (365 - n)!}\n",
" \\end{equation}"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from __future__ import division\n",
"\n",
"import math\n",
"\n",
"\n",
"def pn_dash(n):\n",
" \"\"\"Returns the probability that no birthday occur the same day in a group of n people.\"\"\"\n",
" return math.factorial(365) / (365**n * math.factorial(365 - n)) \n",
"\n",
"def pn(n):\n",
" \"\"\"Returns the probability that the birthday of at least 2 people occur the same day\n",
" in a group of n people.\n",
"\n",
" \"\"\"\n",
" return 1 - pn_dash(n)\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Let's calculate it for 20 people\n",
"print '{:0.2f}%' . format(pn(20) * 100)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"41.14%\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nb_people = range(0, 85, 5)\n",
"p_birthday = [pn(n) for n in nb_people]\n",
"\n",
"for n, p in zip(nb_people, p_birthday):\n",
" print 'n = {:2} -> p = {:.2f}%'.format(n, p * 100)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"n = 0 -> p = 0.00%\n",
"n = 5 -> p = 2.71%\n",
"n = 10 -> p = 11.69%\n",
"n = 15 -> p = 25.29%\n",
"n = 20 -> p = 41.14%\n",
"n = 25 -> p = 56.87%\n",
"n = 30 -> p = 70.63%\n",
"n = 35 -> p = 81.44%\n",
"n = 40 -> p = 89.12%\n",
"n = 45 -> p = 94.10%\n",
"n = 50 -> p = 97.04%\n",
"n = 55 -> p = 98.63%\n",
"n = 60 -> p = 99.41%\n",
"n = 65 -> p = 99.77%\n",
"n = 70 -> p = 99.92%\n",
"n = 75 -> p = 99.97%\n",
"n = 80 -> p = 99.99%\n"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Main plot layout\n",
"f, ax = plt.subplots()\n",
"ax.set_yticks(np.arange(0, 1.1, 0.1))\n",
"plt.xlabel('n')\n",
"plt.ylabel('probability')\n",
"f.text(\n",
" x=0.5, y=0.975,\n",
" s='Probability distribution of birthday collision for a sample of n people',\n",
" horizontalalignment='center',\n",
" verticalalignment='top'\n",
")\n",
"\n",
"# plot the probability distribution\n",
"plt.plot(nb_people, p_birthday, label='$p(n)$', color='red')\n",
"\n",
"# plot the inverse probability distribution\n",
"plt.plot(nb_people, [pn_dash(n) for n in nb_people], label='$p(\\overline{n})$', color='blue')\n",
"\n",
"# draw lines for p(n) = 50%\n",
"n_p50, p50 = [(n, pn(n)) for n in xrange(0, 100) if round(pn(n), 2) in [0.5, 0.51]][0]\n",
"plt.axhline(y=p50, xmax=n_p50/80., linestyle='--', color='grey')\n",
"plt.axvline(x=n_p50, ymax=p50, linestyle='--', color=\"grey\")\n",
"\n",
"# add the legend\n",
"plt.legend(loc='center right')\n",
"plt.text(n_p50 - 1, -0.055, '23')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 26,
"text": [
"<matplotlib.text.Text at 0x56c1bd0>"
]
},
{
"output_type": "display_data",
"png": "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\n3EADNDCQTrAAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 26
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusion\n",
"\n",
"In a group of 23 people, there is a probability of approximately 50% of finding at least two people with the same birthday, contrary to what your intuition could tell you! "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment