You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
48 KiB
Plaintext
201 lines
48 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "42bbd167",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Probability basics 10/02/26\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import math\n",
|
|
"\n",
|
|
"rng = np.random.default_rng(7)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "37ffa1ee",
|
|
"metadata": {},
|
|
"source": [
|
|
"$$ P(A) = \\frac{\\text{Success}}{\\text{Trial}}$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "a137a7b1",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def bernoulli(p, rng=rng):\n",
|
|
" return rng.random() < p\n",
|
|
"\n",
|
|
"def estimate(trials, fn):\n",
|
|
" \"\"\"Return running estimate of P(A) over time\"\"\"\n",
|
|
" x = np.fromiter((fn() for _ in range(trials)), dtype=np.int8, count=trials)\n",
|
|
" return np.cumsum(x)/np.arange(1,trials+1)\n",
|
|
" "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "1334e105",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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Benp6SH5gNFwEa4PGH1vGpc+aImETjynXczb6ktPwymT1IWevne9evWy/iVpe9ESYv2dbK7LvN7f3O9zeynN0u69Hjo0gv4hoSE10koMEUFhZOXKleYvoBUrVjgffvihM3nyZNPfuaamxvx8woQJzqxZs7zb33///c6rr77qfPLJJ87mzZtNiYj+Nb19+/aQv5iTodUELf3Fa29fUI1nHNZFZ5T0pVUKofrgWbBggdPe6Hvyn//5n+ZWv+xOO+20gH+h6Yemlqw0VZ10zjnntLv31w30S2v06NGm5DWYazE5Odm83zp1w9VXX22qChuPv6Bf2I1L0/QzSMf28L0OtOTuiiuu8H6B+oZgrRLQYKCPrZ9xGgQGDhxo9tMwrH8INN4nXPR61c+v1oRyff362jwlxLro/3XRUkjfbfW90devv0f6XBo4KPGAtTCiHn/8cadv377mF1xLSt5++23vzy655BLz5ehxxx13eLfV8e7HjBnjbNmyJajna+swor/MwfwCB1Oq09aaO3YdvEvpB2eogohW6UQS/aIaP368uW3M88Wh5zAS2310ZPpeaMDIyMg47hrUIKGBgPer+XlaNGzpueratatfGPdtKwS0NeamCYKOm7Jp06agGgjr4Gc6hkqorF69WtasWSNjxoyRK6+8ssX76aA7K1eubHZo39YOY67Ddv/85z83sxenpqaa44qEIagBAO0Dc9MEMd9DTk5Oq05yZWWlCTInG0K0C+hen5Eftevzhg0bWrR/VlaWvPfeexJqOkqudk8FAKCtw0hQg551RG+88Uar99WJ21oSNrSPu942pmOv6IRXvkFE6QRtgbYPxHek2lDRieEIIgCAcHF9GPnss89affI0MOhcDU3RUhMNGzp3gd6OGDHC+7NRo0bJ+++/3+S+LZnvQJ+7LWbP3bp1a8gfEwCAkIzA2tHol3lpaWmr99cGwDrKZaB2FDpXT+N2KJ4SDx2xtry8vNnH/vTTT0/4/I8//ricbFVM46mJnnzySdqFAADCytUlIzt37jzuyzhYp5xyigk1Gi48pSR665lIsLGJEyfKkiVLTvi4WuJx8803N/nz5cuXHzfMdzC07k6rYh555BEZNmyYmd1UZ+GcNGlSqx8TAIDWCHrW3vbcACZYGhp0Ar+TaR9x1113mWm79TF00sClS5eaCQW1nUhTunfvLn9v4VT1gRrJ6nGf7OSBL730UlC9dgAACBYNWFtAq1c0PGiIaC2d+M8TZvT2pz/9qfz5z39udp+WBhGlx9c4iAwfPlxOhvbWIYgAANoLV1fTKK2WePvtt+X6668PyePprMZaghMq2oZDq3Y8VTNaItJco9mmHkNLQqZOnWpuW9ptGACAcHB1NY3nC37y5Mkh7cras2dP2bdvn4RSjx495KuvvmrRtk8//bSsX7/eTGc/YcIEGqQCAKxg0LMwtRlpb7QXz29+8xvbhwEAgNBmpIW9aTpSEElLSyOIAAAijqvbjAwcONCMtdEejB49+qT2T0hICLotCQAA7UG023vTFBcXS3tw9dVXm0nyWkPb0Xz77bchPyYAAMLB1WFE5eXlSXug88Ho7Lg6THwwtM1LKHvvAAAQbq4PI127dpX2wDN2yNq1a+Wee+5p0T7x8fGye/fuNj4yAADaluvDyLPPPiu2afjwnd/mV7/6lRkP5ER0XhwAACKdq8OINvjUuVlsGjt2rAkfjekIqUVFRc02eA00QR8AAJHG1WHksccea/FEeTpkvA4g1lrXXHPNcT13Zs+ebWbxbcqKFSuaLCFZtmxZq48FAID2xLUjsAYz2VxMTIyZaTclJUXGjRvXqufTGXFVRUWFt41IS0s2dJTYn/zkJ37DuzO7LgCgo3x/x4qLBzxrilaRFBYWSkZGhhw5ckQGDBhggkN5eXmrnmvkyJHe4PHjH/846P01eOTn55s2Ip5jAQCgo4h1+4BngQqGXnnlFVm8ePFxX/q6j1bXBDtq66BBg076ePVYCCEAgI7ItW1G9Iu9qXYXOvNuoJ4qus/SpUtNtY1q6eit+/fvP8mjBQCg43JtGPFUfzTVQPSUU05pch8d20OrbKqqqkxbEP1/c71yhgwZErJjBgCgo3FtNY3H66+/HvB+bSvS0ioT/X9z7YBPphcOAAAdnatLRpoaZ0SrYbShaDA87UkaW7BgAW09AABohqvDiPaoCVSiceeddwYdIBq3J9FgMn/+fLnrrrtCdrwAAHRErh1nxFMyohPN+faO0RDx+eeft7o0Qx+TLrgAAEiLv79dXTLSuDRDb3X9ZLrQ6r6XXnopVTMAALSQ6xuwau+YwYMHy5tvvikXXXSRZGdnt/TcAQCAEHB9GNGh1idPnmyqanTckIceekhmzpwZinMLAABawNXVNNq+wxNElDaf+cUvfiEPP/yw7UMDAMA1ot3emybQ0O533323CSoAAKDtuTqMbNq0KeD9GlACDQcPAABCz7VhREs+tAQkkNYMegYAAFrHtWGkqQHPWjvoGQAAaB3XhhEdvj3QrLs66Nn06dOtHBMAAG7k2jCiJR/Lli3zCyT6/5Md9AwAAATHtWHEM+CZzh8TqIQEAACEB3PTNJqbRhuv7t69m9IRAABOEnPTtHKckfr6err1AgAQRq6uptFGrNpg1RfdegEACC9Xh5FAs/YuWbKEKhoAAMLI1W1GfAdA0xFXdaAzetIAABDe72/Xz9qrNIAQQgAAsMPV1TQAAMA+wggAALCKMAIAAKwijAAAgMgLI6WlpZKRkSEJCQmSm5srlZWVLdpv5cqVZuj18ePHS3uxceNGmTNnjixevNj0qgEAAO08jKxatUpmzJghc+fOlS1btkhmZqbk5+fLvn37mt1Ph1i/6667ZOTIkdJe3HzzzZKTkyMPPPCATJkyRfr27SvLly+3fVgAALhK0OOMaElIdna2LFq0yKzrcOrp6ekybdo0mTVrVsB9dIj1iy++WG655RZ544035ODBg/LCCy80+Rx1dXVm8e2nrM8RynFGtEREg0hjOiLr559/TldfAADa49w0R48elc2bN0teXt4/HyA62qxXVFQ0ud9//Md/SM+ePc0suS1RUlJiDt6zaBAJNQ1FgWi40gHQAABAeAQVRg4cOGBKOVJSUvzu1/WampqA+7z55pum6mPZsmUtfp7i4mKTojxLdXW1hFpT1UUarnQkVgAA0AF60xw+fFgmTJhggkhycnKL94uPjzfFOb5LqGlVU1FRkd992rhW56phNFYAAMInqOHgNVDoZHJ79+71u1/XU1NTj9v+k08+MQ1Xx40b51cNYp44NlZ27NghZ555ptiyYsUKmTp1qrz88svm+K+88kqCCAAA7TmMxMXFydChQ2Xt2rXe7rkaLnT99ttvP277s88+W95//32/++69915TYvLYY4+1SVuQ1pSQ6AIAAOwIeqI87dar1RvDhg0zvVEWLlwoR44ckYkTJ5qfFxYWSlpammmEquOQDBo0yG//bt26mdvG9wMAAHcKOowUFBTI/v37zUBh2mg1KytLysrKvI1aq6qqTCNQAACANhlnpD33UwYAAB18nBEAAIBQI4wAAACrCCMAAMAqwggAALDK9WHkiy++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NCi0rwQAALhjnJH23E8ZAAB08HFGAAAAQo0wAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAACCyRmC1wTMumw6eAgAAIoPne/tE46tGRBg5fPiwuU1PT7d9KAAAoBXf4zoSa0QPB68zA3/55Zdy6qmnSlRUVEgTmwac6upqhplvQ5zn8OFcc547Eq7nyD/PGjE0iPTu3dtv3rqILBnRF9CnT582e3w9+cx50/Y4z+HDueY8dyRcz5F9npsrEfGgASsAALCKMAIAAKxydRiJj4+XuXPnmltwnjsCrmnOc0fC9eye8xwRDVgBAEDH5eqSEQAAYB9hBAAAWEUYAQAAVhFGAACAVYQRAABglavDSGlpqWRkZEhCQoLk5uZKZWWl7UNqt/785z/LuHHjzJC+OiT/Cy+84Pdz7ZQ1Z84c6dWrl3Tu3Fny8vJk586dftt89dVXctNNN5kR/rp16yaTJk2Sr7/+2m+bbdu2yciRI817osMTz58/X9ykpKREsrOzzdQHPXv2lPHjx8uOHTv8tvnuu+9k6tSpctppp0nXrl3l2muvlb179/ptU1VVJWPHjpUuXbqYx5k5c6Z8//33ftusX79ehgwZYrrzDRgwQFasWCFusXjxYhk8eLB3xMnhw4fLK6+84v0557htzJs3z3x+3HHHHZzrEPvlL39pzq3vcvbZZ0fOeXZcauXKlU5cXJzz1FNPOdu3b3duvfVWp1u3bs7evXttH1q7tGbNGueee+5x/vSnP2lXcOf555/3+/m8efOcpKQk54UXXnDee+8956qrrnLOOOMM59tvv/VuM3r0aCczM9N5++23nTfeeMMZMGCAc+ONN3p/Xltb66SkpDg33XST88EHHzh/+MMfnM6dOztLlixx3CI/P995+umnzevfunWrM2bMGKdv377O119/7d3mZz/7mZOenu6sXbvW2bRpk3PBBRc4F154offn33//vTNo0CAnLy/Peffdd817l5yc7BQXF3u3+fTTT50uXbo4M2bMcD788EPn8ccfd2JiYpyysjLHDf7nf/7Hefnll52PP/7Y2bFjhzN79mynU6dO5rwrznHoVVZWOhkZGc7gwYOd6dOne+/nXIfG3LlznX/5l39x/vrXv3qX/fv3R8x5dm0YycnJcaZOnepdr6+vd3r37u2UlJRYPa5I0DiMNDQ0OKmpqc6CBQu89x08eNCJj483gULphav7bdy40bvNK6+84kRFRTl79uwx67/97W+d7t27O3V1dd5t7r77buess85y3Grfvn3mvL3++uve86pfms8995x3m48++shsU1FRYdb1QyQ6OtqpqanxbrN48WInMTHRe25/8YtfmA8uXwUFBSYMuZVee08++STnuA0cPnzYGThwoPPaa685l1xyiTeMcD2HNoxkZmYG/FkknGdXVtMcPXpUNm/ebKoSfCfj0/WKigqrxxaJPvvsM6mpqfE7nzoxklZ9ec6n3mrVzLBhw7zb6PZ63t955x3vNhdffLHExcV5t8nPzzfVFH//+9/FjWpra81tjx49zK1et8eOHfM711oU27dvX79zfd5550lKSorfedSZObdv3+7dxvcxPNu48fqvr6+XlStXypEjR0x1Dec49LR6QIv/G19znOvQ2rlzp6lK79+/v6kS12qXSDnPrgwjBw4cMB9Avidd6bp+qSI4nnPW3PnUW62D9BUbG2u+ZH23CfQYvs/hJg0NDaZufcSIETJo0CDvedCwpsGuuXN9ovPY1Db6wfPtt9+KG7z//vum7lzrvn/2s5/J888/L+eeey7nOMQ06G3ZssW0h2qM6zl0cnNzTfuNsrIy0yZK/0jU9neHDx+OiPMce1J7A2jTvyY/+OADefPNNznLbeCss86SrVu3mtKnP/7xj1JUVCSvv/465zqEqqurZfr06fLaa6+ZRuloO1dccYX3/9o4W8NJv3795NlnnzWdCto7V5aMJCcnS0xMzHEtiXU9NTXV2nFFKs85a+586u2+ffv8fq6ttLWHje82gR7D9znc4vbbb5fVq1dLeXm59OnTx3u/ngetZjx48GCz5/pE57GpbbRnSSR8cIWC/qWovQGGDh1q/mrPzMyUxx57jHMcQlo9oL/32vtCS0J10cD3m9/8xvxf/6rmem4bWgrygx/8QHbt2hUR17Qrw4h+COkH0Nq1a/2KxHVd64wRnDPOOMNcpL7nU4vttC2I53zqrf4i6IeTx7p168x51wTv2Ua7EGvdpof+RaV/wXbv3t0Vb4u2D9YgolUGen703PrS67ZTp05+51rb1GjdsO+51ioI3/Cn51E/MLQawrON72N4tnHz9a/XYl1dHec4hH70ox+Za1FLoDyLthvT9gye/3M9tw0dNuGTTz4xwy1ExOeG41LatVd7e6xYscL09Jg8ebLp2uvbkhj+reG1u5cuetk8+uij5v+ff/65t2uvnr8XX3zR2bZtm3P11VcH7Np7/vnnO++8847z5ptvmtb1vl17tcW3du2dMGGC6WKp75F2I3NT197bbrvNdJFev369Xxe9b775xq+Lnnb3XbdunemiN3z4cLM07qJ3+eWXm+7B2u3u9NNPD9hFb+bMmaZVfWlpqau69s6aNcv0UPrss8/M9arr2rPrf//3f83POcdtx7c3Dec6dH7+85+bzw29pjds2GC66GrXXO2RFwnn2bVhRGkfaX1zdLwR7eqr418gsPLychNCGi9FRUXe7r333XefCRMa8n70ox+Z8Rt8/e1vfzPho2vXrqa72MSJE03I8aVjlFx00UXmMdLS0kzIcZNA51gXHXvEQwPelClTTFdU/WD413/9VxNYfO3evdu54oorzDgt+oGkH1THjh077j3Nysoy13///v39nqOju+WWW5x+/fqZ164fuHq9eoKI4hyHL4xwrkNDu9j26tXLXNP62anru3btipjzHKX/nHz5CgAAQOu4ss0IAABoPwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAEJv+HwYNjHLI4wvTAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Example 1: coin flip as Bernoulli trails\n",
|
|
"p = 0.5 # fair coin \n",
|
|
"N = 5000\n",
|
|
"\n",
|
|
"# running estimate of P(A) over time; A=success\n",
|
|
"estimation = estimate(N, lambda: bernoulli(p,rng))\n",
|
|
"plt.plot(estimation,'.k')\n",
|
|
"plt.axhline(p,color='red')\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "b8d42630",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x113238ec0>]"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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QOi5LozoOCLafVe1DySe+fXr1zPeCAAAYeK6MKJ0HJEdO3bImDFjfJZrjYkuZ5wRAADCJ8bpqI9rhGlsbJTk5GRpaGiQpKSkoL0uI7ACAGD//O3aEVg9l2xmzJhhezUAAHA1V16mAQAAkYMwAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAAAg+sJISUmJZGRkSGJiouTk5EhFRUWnZTdv3izTp0+XoUOHmikvL6/L8gAAwF0CDiPbt2+XwsJCKSoqkv3790tmZqbk5+dLbW1th+XLy8vlhhtukBdeeEH27t0r6enpctVVV0lVVVUw1h8AAES5GMdxnECeoDUhU6dOlY0bN5r51tZWEzBuu+02Wb58ebfPb2lpMTUk+vx58+b59Z6NjY2SnJwsDQ0NkpSUFMjqAgAAS/w9fwdUM9Lc3Cz79u0zl1q8LxAba+a11sMfp0+flk8++USGDRvWaZmmpibzAdpOAACgbwoojNTX15uajdTUVJ/lOl9dXe3Xa9x5550yevRon0DTXnFxsUlSnklrXgAAQN8U1t40q1evlm3btsmuXbtM49fOrFixwlTpeKbKyspwriYAAAijfoEUTklJkbi4OKmpqfFZrvNpaWldPveHP/yhCSO//e1vZfLkyV2WTUhIMBMAAOj7AqoZiY+Pl+zsbCkrK/Mu0wasOp+bm9vp89asWSP33XeflJaWypQpU3q3xgAAwL01I0q79c6fP9+EimnTpsn69evl1KlTsmDBAvO49pAZM2aMafeh7r//flm1apU89thjZmwST9uSQYMGmQkAALhbwGGkoKBA6urqTMDQYJGVlWVqPDyNWo8cOWJ62Hg8+OCDphfOnDlzfF5Hxym55557gvEZAACAm8YZsYFxRgAAiD4hGWcEAAAg2AgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAq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OVJmzZolhw4d8inz8ccfyy233CLDhw+XQYMGyfXXXy81NTU+ZY4cOSLXXHONDBw40LzOsmXL5NNPP/UpU15eLhdddJFpQX/eeefJli1bxC0efPBBmTx5sneQp9zcXPnNb37jfZxtHBqrV682x4+lS5eyrYPsnnvuMdu27TRhwoTo2c6OS23bts2Jj493HnnkEeeNN95wFi1a5AwZMsSpqamxvWoRaffu3c7KlSudnTt3au8rZ9euXT6Pr1692klOTnaefPJJ569//atz3XXXOZ/5zGecjz76yFvmS1/6kpOZmen86U9/cvbs2eOcd955zg033OB9vKGhwUlNTXXmzp3rvP76684vf/lLZ8CAAc5Pf/pTxy3y8/Odn//85+bzHzhwwPn3f/935+yzz3Y+/PBDb5mbbrrJSU9Pd8rKypy//OUvzsUXX+xccskl3sc//fRTZ9KkSU5eXp7zyiuvmO8uJSXFWbFihbfMO++84wwcONApLCx03nzzTecnP/mJExcX55SWljpu8PTTTzu//vWvnb///e/OoUOHnO9+97tO//79zXZXbOPgq6iocDIyMpzJkyc7S5Ys8S5nWwdHUVGR8/nPf945duyYd6qrq4ua7ezaMDJt2jTnlltu8c63tLQ4o0ePdoqLi62uVzRoH0ZaW1udtLQ0Z+3atd5lJ06ccBISEkygULrj6vNefvllb5nf/OY3TkxMjFNVVWXmN23a5AwdOtRpamrylrnzzjudz372s45b1dbWmu32+9//3rtd9aT5+OOPe8scPHjQlNm7d6+Z14NIbGysU11d7S3z4IMPOklJSd5te8cdd5gDV1sFBQUmDLmV7ns/+9nP2MYhcPLkSWf8+PHO888/71x++eXeMML+HNwwkpmZ2eFj0bCdXXmZprm5Wfbt22cuJbS9/43O79271+q6RaN3331Xqqurfban3otAL315tqf+1EszU6ZM8ZbR8rrd//znP3vLXHbZZRIfH+8tk5+fby5T/POf/xQ3amhoMD+HDRtmfup++8knn/hsa62KPfvss3229QUXXCCpqak+21FvhvXGG294y7R9DU8ZN+7/LS0tsm3bNjl16pS5XMM2Dj69PKDV/+33ObZ1cL311lvmUvq4cePMJXG97BIt29mVYaS+vt4cgNpudKXzelJFYDzbrKvtqT/1GmRb/fr1MyfZtmU6eo227+EmerdqvbZ+6aWXyqRJk7zbQcOaBruutnV327GzMnrg+eijj8QNXnvtNXPtXK9933TTTbJr1y6ZOHEi2zjINOjt37/ftIdqj/05eHJyckz7jdLSUtMmSv9I1PZ3esfcaNjOUXHXXsCN9K/J119/XV588UXbq9Inffazn5UDBw6Y2qcdO3bI/Pnz5fe//73t1epT9Jb0S5Yskeeff940SkfoXH311d7ftXG2hpNzzjlHfvWrX5lOBZHOlTUjKSkpEhcXd0ZLYp1PS0uztl7RyrPNutqe+rO2ttbncW2lrT1s2pbp6DXavodb3HrrrfLMM8/ICy+8IGPHjvUu1+2glxlPnDjR5bbubjt2VkZ7lkTDgSsY9C9F7Q2QnZ1t/mrPzMyUDRs2sI2DSC8P6P977X2hNaE6aeD78Y9/bH7Xv6rZn0NDa0HOP/98OXz4cFTs064MI3oQ0gNQWVmZT5W4zus1YwTmM5/5jNlJ225PrbbTtiCe7ak/9T+CHpw8fve735ntrgneU0a7EOu1TQ/9i0r/gh06dKgrvhZtH6xBRC8Z6PbRbduW7rf9+/f32dbapkavDbfd1noJom340+2oBwy9DOEp0/Y1PGXcvP/rvtjU1MQ2DqIrrrjC7ItaA+WZtN2Ytmfw/M7+HBo6bMLbb79thluIiuOG4+KuvdrbY8uWLaanxze/+U3TtbdtS2L4tobX7l466W6zbt068/t7773n7dqr2++pp55yXn31VWfmzJkddu298MILnT//+c/Oiy++aFrXt+3aqy2+tWvvjTfeaLpY6nek3cjc1LV38eLFpot0eXm5Txe906dP+3TR0+6+v/vd70wXvdzcXDO176J31VVXme7B2u1uxIgRHXbRW7ZsmWlVX1JS4qquvcuXLzc9lN59912zv+q89ux67rnnzONs49Bp25uGbR083/nOd8xxQ/fpP/7xj6aLrnbN1R550bCdXRtGlPaR1i9HxxvRrr46/gU69sILL5gQ0n6aP3++t3vv3XffbcKEhrwrrrjCjN/Q1vHjx034GDRokOkutmDBAhNy2tIxSr7whS+Y1xgzZowJOW7S0TbWScce8dCAd/PNN5uuqHpg+PKXv2wCS1v/+Mc/nKuvvtqM06IHJD1QffLJJ2d8p1lZWWb/HzdunM979HVf//rXnXPOOcd8dj3g6v7qCSKKbRy+MMK2Dg7tYjtq1CizT+uxU+cPHz4cNds5Rv/pff0KAABAz7iyzQgAAIgchBEAAGAVYQQAAFhFGAEAAFYRRgAAgFWEEQAAYBVhBAAAWEUYAQAAVhFGAACAVYQRAABgFWEEAABYRRgBAABi0/8B6QqacLzvgPwAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"x = np.fromiter((bernoulli(p,rng) for _ in range(N)), dtype=np.int8, count=N)\n",
|
|
"proba = np.cumsum(x)/np.arange(1, N+1)\n",
|
|
"plt.plot(proba, 'ok')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "d420ae37",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(np.float64(0.351845), 0.35)"
|
|
]
|
|
},
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Example 2: Law of total probability via simulation\n",
|
|
"# Objective: Estimate the overall probability of drawing a red ball, when the ball is \n",
|
|
"# drawn from a randomly selected urn\n",
|
|
"#-=-=-=-=-=-=-=\n",
|
|
"\n",
|
|
"# Parameters:\n",
|
|
"pA = 0.3 # probability that the experiment selects urn A\n",
|
|
"pRedA = 0.7 # probability of red given urn A was selected P(R|A)\n",
|
|
"pRedB = 0.2 # P(R|B)\n",
|
|
"N = 200_000\n",
|
|
"\n",
|
|
"def bernoulli(p, rng=rng):\n",
|
|
" return rng.random() < p\n",
|
|
"\n",
|
|
"def drawRed():\n",
|
|
" chooseA = bernoulli(pA)\n",
|
|
" if chooseA:\n",
|
|
" return bernoulli(pRedA)\n",
|
|
" else:\n",
|
|
" return bernoulli(pRedB)\n",
|
|
" \n",
|
|
"def estimate(trials, fn):\n",
|
|
" \"\"\"Return running estimate of P(A) over time\"\"\"\n",
|
|
" x = np.fromiter((fn() for _ in range(trials)), dtype=np.int8, count=trials)\n",
|
|
" return np.cumsum(x)/np.arange(1,trials+1)\n",
|
|
"\n",
|
|
"pHat = estimate(N,drawRed)\n",
|
|
"pHat[-1]\n",
|
|
"pExact = pA*pRedA+(1-pA)*pRedB\n",
|
|
"pHat[-1], pExact"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "93603e2b",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(pHat,'.k')\n",
|
|
"plt.xlim([0,50])\n",
|
|
"plt.show()"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": ".venv (3.14.2)",
|
|
"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.14.2"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|