Skip to content

Instantly share code, notes, and snippets.

@Santiago-j-s
Last active June 17, 2019 19:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Santiago-j-s/9f5884f60969846ce3130799baa030f3 to your computer and use it in GitHub Desktop.
Save Santiago-j-s/9f5884f60969846ce3130799baa030f3 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Birthday Problem\n",
"\n",
"There are $ 365^{k} $ ways to assign birthdays to $ k $ people. Also, there are $ 365 \\cdot 364 \\ldots (365-k+1) $ ways to assign birthdays such that no two people share a birthday (for $ k \\leq 365 $).\n",
"\n",
"So the probability of at least one match is:\n",
"\n",
"$$ P(\\text{at least one birthday match}) = 1 - \\frac{365 \\cdot 364 \\ldots (365-k+1)}{365^{k}} $$\n",
"\n",
"which could be expressed as:\n",
"\n",
"$$ P(\\text{at least one birthday match}) = 1 - \\frac{365}{365} \\cdot \\frac{364}{365} \\ldots \\frac{365-k+1}{365} $$"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 936x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.style.use('seaborn-notebook')\n",
"\n",
"def birthday_problem():\n",
" NDAYS = 365\n",
" a = np.arange(NDAYS, 0, -1)\n",
" n = np.tril(np.tile(a, (NDAYS, 1))) / NDAYS\n",
" n[n == 0] = 1\n",
" return 1 - np.prod(n, 1)\n",
"\n",
"birthday_problem()\n",
"\n",
"k = np.arange(1, 101)\n",
"p = birthday_problem()[:100]\n",
"\n",
"plt.figure(num=1, figsize=(13, 5))\n",
"plt.plot(k, p, '.')\n",
"\n",
"plt.xticks(range(0, 101, 5))\n",
"\n",
"plt.xlabel('k')\n",
"plt.ylabel('prob. of birthday match')\n",
"\n",
"plt.axhline(y=.5, color='black', ls='--')\n",
"\n",
"plt.grid(axis='x')\n",
"\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment