Skip to content

Instantly share code, notes, and snippets.

@tomjamescn
Created January 1, 2022 15:24
Show Gist options
  • Save tomjamescn/104b5b45a76ae492415b30d90d6e981f to your computer and use it in GitHub Desktop.
Save tomjamescn/104b5b45a76ae492415b30d90d6e981f to your computer and use it in GitHub Desktop.
普林斯顿概率论读本 书中实验
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "mexican-stewart",
"metadata": {},
"source": [
"## 普林斯顿概率论读本 书中实验\n",
"> 记得读书时(大学本科阶段)对概率论完全是死记硬背,到目前基本忘得差不多了。目前工作(深度强化学习)和生活(投资)中需要大量理解概率论相关的知识,本书的风格犹如一个导师在你耳边娓娓道来,这种感觉真棒👍🏻"
]
},
{
"cell_type": "markdown",
"id": "suspended-contributor",
"metadata": {
"tags": []
},
"source": [
"## 第一章"
]
},
{
"cell_type": "markdown",
"id": "failing-newman",
"metadata": {},
"source": [
"### 计算生日问题\n",
"> 假设客人的出生日期都是相互独立的, 并且每个人都等可能地出生在一年中的任何一天 (2 月 29 日除外), 那么房间里有多少人才能保证其中至少两个人的生日在同一天的概率不小于 50%?"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "bulgarian-updating",
"metadata": {},
"outputs": [],
"source": [
"from decimal import *\n",
"import numpy as np\n",
"import math\n",
"\n",
"def cal(n):\n",
" with localcontext() as ctx:\n",
" ctx.prec = 32 # desired precision\n",
" a = Decimal(math.factorial(365))\n",
" b = Decimal(math.pow(365, n))\n",
" c = Decimal(math.factorial(365-n))\n",
" # d为n个人中任意两个人的生日都不相同的概率\n",
" d = a/(b*c)\n",
" \n",
" return 1 - d\n",
" \n",
" \n",
"def cal_approximate(n):\n",
" # 估算,详见33页\n",
" d = math.exp(-(n-1)*n/(365*2))\n",
" \n",
" return 1 - d"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "young-associate",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"for x in range(0, 100):\n",
" y = cal(x)\n",
" y_approximate = cal_approximate(x)\n",
" \n",
" plt.plot(x, y, 'gv')\n",
" plt.plot(x, y_approximate, 'bo')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "corporate-jackson",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "neural-demand",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment