diff --git a/session-3-probability/main.ipynb b/session-3-probability/main.ipynb new file mode 100644 index 0000000..f34486f --- /dev/null +++ b/session-3-probability/main.ipynb @@ -0,0 +1,200 @@ +{ + "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": [ + "
" + ] + }, + "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": [ + "[]" + ] + }, + "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": [ + "
" + ] + }, + "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": [ + "
" + ] + }, + "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 +} diff --git a/session-3-probability/probability.ipynb b/session-3-probability/probability.ipynb index d88c41a..0d3d19e 100644 --- a/session-3-probability/probability.ipynb +++ b/session-3-probability/probability.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 25, + "execution_count": 4, "id": "16ca28a2", "metadata": {}, "outputs": [], @@ -48,13 +48,13 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 2, "id": "8e213def", "metadata": {}, "outputs": [ { "data": { - "image/png": "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7b4TdYvpefXZUcCi437WrFk28FIQ7raAbty40X4mdfIfO3asDbq1DxS8RLZode/e3e53Laf3Xet8+umnS22jtk3HlYImHQeiIPK7776La/+5x6MCLB23fgGUXqe6yLXOgw46qMz16VjX69Jxp++QQYMGmfHjx9suLmSBAyRp+/bt+snknHvuuXEtv3r1arv8ZZddFnb7qFGj7O2vvvpq6LbOnTvbi2vJkiV2mZ///OfOnj17Qrffc8899vb33nuv1LITJkyIuU16Di07e/bsUvdFW0fjxo2d4uLi0PWHH37YLtu1a1dn//79oduvueYap1KlSs62bdvCHqtlX3vttdBtmzdvdqpWreqMHDmy1GvQ38htfeyxx0K3aV/Ur1/fufDCC0O33XnnnXa5BQsWhG77/vvvnRYtWpRap5+BAwc6hx12mLN169aw2/v27evUqlXL2b17t72u9/3YY48tc11Tpkyxz/nFF1/EvR979OgRth87duzoVKhQwRk6dGjotp9++sk54ogjwo4RcbfNtXfvXue4445zunTpEnZ7jRo1wp470dde3uNbz61tiIe77JYtW+xlzZo1zm233Wb3ScuWLUPL/frXv3YOOeSQUo/Xvtfzx7po3aJ937x581Lvg177kUce6XTr1i3stkglJSWljtOrr77a3rZ8+fKw41771Ht8PPPMM/b6W2+9FXO/vPnmm3bZefPmlTqG4rm49Lp1/aabbir1HDNnzrT3ffzxx2Vuy29/+1vnxhtvdP7yl7/Y192zZ0/7uIsuuijm60B60C2FpOmXrMT6ReNySzfVdeOlX7gST27OgAEDwvIUfvnLX9q/3qoG/WpUbBJPq42o+0DrLS+1AuiXs3fb9u3bZ5vuvY455pjQdot+papZP57KjKKiorB+fe0L/br0PnbhwoW2u0otGC51f+mXZCzab0pWPeecc+z/9UvfvairQK1lq1atssvqV/W///1v++s9ldRK4t2Pyi3Rtuh2l8qn1QUWuc+8LQFq5dL2al+725yq156u4zsatcbpONFFXb3q6urYsWNYa6daINVyWNbx+fLLL5e6XHrppWHLKYFW+SdqfdM63X2gbVA3zWuvvRbqTvLub+X8aHltn44N777SvlGLmNviI3otamHzcpPO1dKm9ZXFfa3e1ii9T36v0e/icqs5/XLA3Ly3WBWf6pZXC5da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ay9Iz0B+Kgtfs2YNJeEAAMQh6XFufvjhBzuX1ObNm0udjHv27JnsagueWr8UOHr3qca7adasWcHvGwAA0hbcLFy40PTv399s3bq11H2aVFMtDUgOA/kBAJCFnBu1LnTv3t2Oa6OB/PJJrufceHNv1BWlFhtGKAYAFLodCZy/kwputFKNTHzUUUeZfJMvwQ0AAMjgIH6aoXrp0qXJPBQAACCtkmq52b17t+ndu7epW7euOf74403lypXD7v/d735nchUtNwAA5J+0l4JrioWXXnrJVKtWzbbgKInYpf/ncnADAACCLang5vrrrzcTJ040Y8eODRvvBgAAINuSikz27t1rp1ogsAEAAIEIboqLi828efNSvzUAAADZ6JbSIH133HGHWbRokWnZsmWphOK77rqrvNsFAACQueDmvffeMyeeeKL9//vvvx92nze5GAAAIC+CmyVLlqR+SwAAAFKAUicAAFCYLTcXXHCBeeSRR+zAOfp/WZ5++ulUbBsAAED6ghuNCujm0yjAIbcGAAAEZvqFfMb0CwAA5J+0T5zZpUsXs23bNt8n1n0AAADZklRwo/mkNEpxpB9++MG8/vrrqdguAACA9JeCv/vuu6H/f/jhh2bjxo1hA/stXLjQNGjQgLcCAADkR3DTqlUrm0isi1/304EHHmimT5+eyu0DAABIX3DzxRdfGOUfN23a1KxYscLUrVs3dF+VKlXMoYceaipVqpTYFgAAAGQruGncuLH9u3///lRuAwAAQHYTih999FHzwgsvhK5fe+21pnbt2qZTp05m3bp1qds6AACATAQ3t912m82vkZKSEjNjxgw7S3idOnXMNddck8wqAQAAsjdx5oYNG0yzZs3s/xcsWGB69eplBg8ebE4++WRz6qmnpmbLAAAAMtVyU1RUZL755hv7/5deesl069bN/r9atWrm+++/T2aVAAAA2Wu5UTBz2WWXmRNPPNF8+umn5qyzzrK3f/DBB6GkYwAAgLxpuZk5c6ZNHt66daudAfyQQw6xt69cudJcfPHFqd5GAACA9AY3qozq3bu3qVGjhrnxxhvNl19+aW8/6qijTOfOnZNZJQAAQPaCm7/85S/mjDPOMNWrVzfvvPOO2bNnT2jiTFVSAQAA5FVwc8stt5jZs2ebBx54wFSuXDl0u6qlVq1alcrtAwAASH9w88knn5hTTjml1O21atUy27ZtS2aVAAAA2Qtu6tevb9asWVPq9jfeeMPOOwUAAJBXwc2gQYPM8OHDzfLly+0M4V999ZX585//bEaNGmUuv/zy1G8lAABAOse5GTt2rJ088/TTTze7d++2XVRVq1a1wc2wYcOSWSUAAEBKVHAcx0n2wXv37rXdUzt37jTHHHOMHbk416miS7lB27dvNzVr1sz25gAAgBSfv5NquXFVqVLFBjUAAAB5nXMDAACQqwhuAABAoBDcAACAQMmJ4EYTcTZp0sRUq1bNtG/f3qxYsSLqshoV+Ze//KX52c9+Zi9du3Ytc3kAAFBYsh7czJs3z4wYMcJMmDDBTt1wwgknmB49epjNmzf7Lr906VLTr18/s2TJElNSUmIaNmxounfvHpq8EwAAFLZylYKnglpq2rZta2bMmGGva/wcBSwaL0fj6cSyb98+24Kjx/fv3z/m8pSCAwCQfxI5f2e15Ubj5KxcudJ2LYU2qGJFe12tMvHQIII//vijOfjgg33v14zl2iHeCwAACK6sBjdbt261LS/16tULu13XN27cGNc6xowZYw4//PCwAMlr0qRJNtJzL2oVAgAAwZX1nJvymDx5spk7d6555plnbDKyn3HjxtkmLPeyYcOGjG8nAADInHKNUFxederUMZUqVTKbNm0Ku13XNfN4WaZOnWqDm1deecW0bNky6nKa80oXAABQGLLacqPpG1q3bm0WL14cuk0JxbresWPHqI+74447zM0332wWLlxo2rRpk6GtBQAA+SCrLTeiMvDi4mIbpLRr185MmzbN7Nq1ywwYMMDerwqoBg0a2NwZuf3228348ePN448/bsfGcXNzNGlnPkzcCQAAAh7c9OnTx2zZssUGLApUWrVqZVtk3CTj9evX2woq16xZs2yVVa9evcLWo3FybrzxxoxvPwAAyC1ZH+cm0xjnBgCA/JM349wAAACkGsENAAAIFIIbAAAQKAQ3AAAgUAhuAABAoBDcAACAQCG4AQAAgUJwAwAAAoXgBgAABArBDQAACBSCGwAAECgENwAAIFAIbgAAQKAQ3AAAgEAhuAEAAIFCcAMAAAKF4AYAAAQKwQ0AAAgUghsAABAoBDcAACBQCG4AAECgENwAAIBAIbgBAACBQnADAAACheAGAAAECsENAAAIFIIbAAAQKAQ3AAAgUAhuAABAoBDcAACAQCG4AQAA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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR7hJREFUeJzt3Qe4FNX9//FzQTqCkS5dIXZQERBMLIiiGAs2VBSCSEnEhoggCWCJEImIQRRUFEsiYEMTDUoAC6EpaIwdIgIiVQUEBATm/3zO7z+buXtn926ZbXPfr+cZlp2dnXJ27s53z/meM0WO4zgGAAAgJMrlegcAAACCRHADAABCheAGAACECsENAAAIFYIbAAAQKgQ3AAAgVAhuAABAqBDcAACAUCG4AQAAoUJwg7x02mmn2amsevPNN01RUZF9DKtmzZqZX//616asGjt2rDn00ENN+fLlzXHHHRfYen/729+aM8880xSCqVOn2vP8q6++Svg93377ralWrZp57bXXMrpvKGwENwjEf//7X9O/f3/7ZV25cmVTo0YNc/LJJ5sHHnjA/Pjjj5RyGbVgwQIzatQos2XLFpNP7rnnHjNz5sycbf+NN94wQ4YMsX8jTzzxhN2fWBQAKgBwJ/1ttW7d2tx3331m9+7dxZZduXKleeyxx8ztt98emafAQe/705/+5Lt+fT56ffPmzaYQ1KpVy1x77bXm97//faDrXbt2rbnsssvMQQcdZMv4ggsuMF9++WVC79UPMe9n5E5nn312oPuIxB2QxLKAr1dffdVceumlplKlSqZnz57mmGOOMXv27DHz5883t956q/n444/NI488kvSXf1l2yimn2KCwYsWKptCDmzvuuMNeoHXR8Pr8889NuXK5+X2lYOKSSy4xF154YU62P3fuXHvsU6ZMSegz1t+WghZRoPjCCy+YwYMHm3fffddMmzYtspx+TDRv3tycfvrpJswGDBhg/vznP9ty7NSpU9rr2759uy2zrVu32sCwQoUK5v777zennnqq+eCDD2xAVZpGjRqZ0aNHF5t3yCGHpL1vSA3BDdKiX4qXX365adq0qf2iadCgQeS16667zqxYscIGP8nK5UV9586dpmrVqiaXdOFTDViY6YJdVm3cuNFUqVIl4fP8gAMOMFdddVWxpqf27dub6dOnm3HjxtmL6E8//WT+8pe/2At/2B155JH2R5SatYIIbh566CGzfPlys2TJEtO2bVs775xzzrHbUA1ZvJo1V82aNYt9RsgtmqWQlnvvvdf+6tEvUG9g42rRooW58cYbI8/37t1r7rrrLnPYYYfZi5vyLvRLKbp6PTrnxs1BmTFjhvnDH/5gfyXp4n/GGWfYACo6OPnss88SqmbXNvQFtnTpUltboqDGrdLX9lRlX1quiJs38K9//csMGjTI1KlTx+YEdOvWzWzatKnEe3/1q1/ZWq127drZY1BT3lNPPVVqzo27r5988on9lal9bdiwof0Moq1atcqcf/75dj/q1q1rbr75ZvP6668nnMejKvprrrnG1KtXz35ORx99tHn88cdLLDdhwgT7mvblZz/7mTnxxBPNX//6V/uayk41d6LaBLeq3s2viFWOKpsbbrjBlqNqe9TcqZpA1VioZlDb0aRmHcdxiu2Pml46duxof2kreGjTpo15/vnniy2jbezYscM8+eSTkX3y7keix+4nkfNb21NTlPbB3b6OPdng1/37cMtT5aZzvnPnziYIixcvts0qumjr81Uths7x6PNMgdbhhx9uy1vlrlpcvxwa1eAqENFy+vu9++67zf79+0ss995775kuXbqY2rVr22V17ujziKa8or/97W8lzoFU6BxRUOMGNnLEEUfY7xd95yRKn7++D5F71NwgLfpy0cVZF5REqK1cFxU1Cdxyyy32C1RVuZ9++ql56aWXSn3/mDFj7Be7quRVhawLe48ePex6XPr1pYv/yJEjfYMTvwRF/UpTDZR+eemilorrr7/eXnS1XX25jx8/3gwcOND+uvZSMKbj79Onj+nVq5e9cOriqguxLqTxfP/99/aCc9FFF9n8AH0p33bbbebYY4+1xyC6aOoism7dOhtY1q9f3wYc8+bNS+g4NmzYYE466SR70dX+K8j4xz/+Yfd327Zt5qabbrLLPfroozYI0bFoO7t27TIffvih/SyuvPJKu49ffPGFefbZZ20Vvy5WovWVVo7aZzVnLVq0yDZpKshRE1eTJk3sr2glkyohV8GeAh5vs4yCOp0TCojUZKOL7d///ndz7rnn2mWefvppex4quOzXr5+dp2AkmWNP5/zW9nVMOk/dpqZE/36i89zEbTJR+Wi/jz/+eN/lFfT7BfyaH021sDqfdE7qfNbfnAIynVfvvPOOLTtRs5i2q78dBSw67x9++GEbeCkId2tA169fb/8mdfEfOnSoDbpVBgpeomu0zjrrLFvuWk6fu9b54osvlthH7ZvOKwVNOg9EQeQPP/yQUPm556MCLJ23fgGUjlNN5FrngQceGHd9Otd1XDrv9B3St29fM2LECNvEhRxwgBRt3bpVP5mcCy64IKHlP/jgA7v8tddeW2z+4MGD7fy5c+dG5p166ql2cs2bN88uc+SRRzq7d++OzH/ggQfs/P/85z8llh05cmSp+6RtaNlJkyaVeC3WOpo2ber06tUr8vyJJ56wy3bu3NnZv39/ZP7NN9/slC9f3tmyZUux92rZt99+OzJv48aNTqVKlZxbbrmlxDHoMXpfn3rqqcg8lUX9+vWdiy++ODLvvvvus8vNnDkzMu/HH390jjjiiBLr9NOnTx+nQYMGzubNm4vNv/zyy52aNWs6O3futM/1uR999NFx1zV27Fi7zZUrVyZcjl26dClWjh06dHCKioqcAQMGRObt3bvXadSoUbFzRNx9c+3Zs8c55phjnE6dOhWbX61atWLbTvbY0z2/tW3tQyLcZTdt2mSnFStWOPfcc48tk1atWkWWu+qqq5xatWqVeL/KXtsvbdK6RWXfsmXLEp+Djr158+bOmWeeWWxetIULF5Y4T2+66SY7b/HixcXOe5Wp9/x46aWX7PN333231HJZsGCBXXb69OklzqFEJpeOW8/vvPPOEtuYOHGife2zzz6Luy/XXHONM2rUKOeFF16wx33++efb91122WWlHgcyg2YppEy/ZKW0XzQut+ummm689AtXEsnN6d27d7E8hV/+8pf20durQb8aFZskUmsjaj7QetOlWgD9cvbu2759+2zVvddRRx0V2W/Rr1RV6yfSM6N69erF2vVVFvp16X3vrFmzbHOVajBcav7SL8nSqNyUrHreeefZ/+uXvjupqUC1ZcuWLbPL6lf1119/bX+9B0m1JN5yVG6J9kXzXeo+rSaw6DLz1gSolkv7q7J29zmoY8/U+R2LauN0nmhSU6+aujp06FCstlM1kKo5jHd+zp49u8R09dVXF1tOCbTKP1Htm9bploH2Qc00b7/9dqQ5yVveyvnR8to/nRveslLZqEbMrfERHYtq2LzcpHPVtGl98bjH6q2N0ufkd4x+k8vtzemXA+bmvZXW41PN8qrhUm2lyvPll1+2f29q0lLtI7KP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AAAgVAhuAABAqBDcAACAUCG4AQAAoZJycLN3717zz3/+00yePNn88MMPdt4333xj784NAABQUPeWWrVqlTn77LPtvZ92795tzjzzTHPggQeaP/7xj/b5pEmTgt9TAACATNXc3HjjjfZO3t9//72pUqVKZH63bt3MnDlzUlklAABA7mpu3nnnHbNgwQJTsWLFYvObNWtm79YNAABQUDU3+/fvN/v27Ssx/+uvv7bNUwAAAAUV3Jx11llm/PjxkedFRUU2kXjkyJGma9euQe4fAABAUoocx3GSe8v/1dB06dLF6K3Lly+3+Td6rF27tnn77bdN3bp1Tb7atm2bqVmzptm6daupUaNGrncHAAAEfP1OKbhxu4JPnz7d/Pvf/7a1NieccILp0aNHsQTjfERwAwBA4cl4cKPamY4dO5oDDjigRMCjRONTTjnF5CuCGwAACk8y1++Ucm5OP/10891335WYrw3qNQAAgFxJKbhRZY+SiKN9++23plq1akHsFwAAQObHubnooovsowKbX//616ZSpUqR19Q1/MMPP7TNVQAAAAUR3Kity6250Xg23uRhDeh30kknmb59+wa/lwAAAJkIbp544onISMSDBw+mCQoAAOSdlLuCFyp6SwEAEO7rd0r3lpLnn3/ezJgxw94ZfM+ePcVeW7ZsWaqrBQAAyH5vqT//+c+md+/epl69eub999837dq1M7Vq1TJffvmlOeecc9LbIwAAgGwHNw899JB55JFHzIQJE2wi8ZAhQ8zs2bPNDTfcYKuLAAAACiq4UVOU2+VbPaZ++OEH+/+rr77aPPvss8HuIQAAQKaDm/r160dGKG7SpIlZtGiR/f/KlSttN3EAAICCCm46depkXnnlFft/5d7cfPPN5swzzzTdu3c33bp1C3ofAQAAMtsVfP/+/XZyb5w5bdo0e8PMli1bmv79+9s8nHxFV3AAAApPxu8KXsgIbgAAKDxZGedm165d9l5SGzdutLU4Xueff36qqwUAAEhLSsHNrFmzTM+ePc3mzZtLvKabauommgAAAAWTUHz99debSy+91Kxbty6Sf+NOBDYAAKDggpsNGzaYQYMG2RGKAQAACj64ueSSS8ybb74Z/N4AAACkKaXeUjt37rTNUnXq1DHHHnusqVChQrHXdRuGfEVvKQAACk/Ge0vpFgtvvPGGqVy5sq3BURKxS//P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DQAACBWCGwAAECoENwAAIFQIbgAAQKgQ3AAAgFApc/eWchwncgMuAABQGNzrtnsdj6fMBTc//PCDfWzcuHGudwUAAKRwHdfdweMpchIJgUJk//795ptvvjEHHnigKSoqCjyqVNC0Zs2aUm/HDsq5EHBOU85hwvlc2GWtcEWBzSGHHGLKlYufVVPmam5UII0aNcroNvRBEtxkHuWcPZQ15RwmnM+FW9al1di4SCgGAAChQnADAABCheAmQJUqVTIjR460j8gcyjl7KGvKOUw4n8tOWZe5hGIAABBu1NwAAIBQIbgBAAChQnADAABCheAGAACECsFNQCZOnGiaNWtmKleubNq3b2+WLFkS1KrLjLffftucd955dvRJjR49c+bMYq8r933EiBGmQYMGpkqVKqZz585m+fLlxZb57rvvTI8ePeygUQcddJDp06eP2b59e5aPJH+NHj3atG3b1o7QXbduXXPhhReazz//vNgyu3btMtddd52pVauWqV69urn44ovNhg0bii2zevVqc+6555qqVava9dx6661m7969WT6a/Pbwww+bVq1aRQYx69Chg/nHP/4ReZ1yzowxY8bY74+bbrqJsg7YqFGjbNl6pyOOOCI/z2n1lkJ6pk2b5lSsWNF5/PHHnY8//tjp27evc9BBBzkbNmygaJPw2muvOcOHD3defPFF9eBzXnrppWKvjxkzxqlZs6Yzc+ZM59///rdz/vnnO82bN3d+/PHHyDJnn32207p1a2fRokXOO++847Ro0cK54oor+Bz+vy5dujhPPPGE89FHHzkffPCB07VrV6dJkybO9u3bI2U0YMAAp3Hjxs6cOXOc9957zznppJOcjh07Rl7fu3evc8wxxzidO3d23n//ffu51a5d2xk2bBjl7PHKK684r776qvPFF184n3/+uXP77bc7FSpUsGVPOWfGkiVLnGbNmjmtWrVybrzxRs7pgI0cOdI5+uijnXXr1kWmTZs25eV3B8FNANq1a+dcd911kef79u1zDjnkEGf06NFBrL5Mig5u9u/f79SvX98ZO3ZsZN6WLVucSpUqOc8++6x9/sknn9j3vfvuu5Fl/vGPfzhFRUXO2rVrs3wEhWHjxo22zN56661ImeoC/Nxzz0WW+fTTT+0yCxcutM/1hVSuXDln/fr1kWUefvhhp0aNGs7u3btzcBSF42c/+5nz2GOPUc4Z8MMPPzgtW7Z0Zs+e7Zx66qmR4IZzOtjgRj8e/eRbOdMslaY9e/aYpUuX2iYS7/2r9HzhwoXprh7/38qVK8369euLlbPuMaImQLec9aimqBNPPDGyjJbX57F48WLK0sfWrVvt48EHH2wfdS7/9NNPxcpZ1c5NmjQpVs7HHnusqVevXmSZLl262Bvlffzxx5Szj3379plp06aZHTt22OYpyjl4ag5Rc4f33OWcDp5SAZQ6cOihh9oUADUzSb6d02XuxplB27x5s/3i8n5YouefffZZzvYrbBTYiF85u6/pUW24XgcccIC9cLvL4H/2799v8xJOPvlkc8wxx0TKsGLFijZIjFfOfp+D93PC//nPf/5jgxnlIigH4aWXXjJHHXWU+eCDDyjnAClwXLZsmXn33XdLvMY5HRz9mJw6dao5/PDDzbp168wdd9xhfvnLX5qPPvoo78qZ4AYow7909aU0f/78XO9KaOkioEBGNWTPP/+86dWrl3nrrbdyvVuhsmbNGnPjjTea2bNn2w4dyJxzzjkn8n8lyyvYadq0qZkxY4bt5JFPaJZKU+3atU358uVLZITref369dNdPf4/tyzjlbMeN27cWOx1ZeGrBxWfRXEDBw40f//73828efNMo0aNIvNVTmpq3bJlS9xy9vscvJ8T/o9+ybZo0cK0adPG9lRr3bq1eeCBByjnAKk5RH/3J5xwgq2p1aQA8s9//rP9v2oGOKczQ7U0P//5z82KFSvy7pwmuAngy0tfXHPmzClW3a/nqo5GMJo3b25Pfm85q51WuTRuOetRf1j6snPNnTvXfh76hYH/606vwEbNIyoblauXzuUKFSoUK2d1FVe7urec1dziDST1q1ndndXkgth0Lu7evZtyDtAZZ5xhz0fVkLmT8u6UD+L+n3M6MzTMxn//+187PEfefXcEmp5chruCq9fO1KlTbY+dfv362a7g3oxwJNbbQd0DNenUHDdunP3/qlWrIl3BVa4vv/yy8+GHHzoXXHCBb1fw448/3lm8eLEzf/5823uCruD/85vf/MZ2p3/zzTeLdefcuXNnse6c6h4+d+5c252zQ4cOdoruznnWWWfZ7uSzZs1y6tSpQ1fwKEOHDrW90FauXGnPVz1Xz7033niDcs4wb28pzung3HLLLfa7Q+f0v/71L9ulW1251esy3747CG4CMmHCBPuharwbdQ3XOCtIzrx582xQEz316tUr0h3897//vVOvXj0bTJ5xxhl2/BCvb7/91gYz1atXt90Le/fubYMm/B+/8tWksW9cChZ/+9vf2m7LVatWdbp162YDIK+vvvrKOeecc5wqVarYLzd96f30008Us8c111zjNG3a1H4n6Atc56sb2FDO2Q1uOKeD0b17d6dBgwb2nG7YsKF9vmLFirws5yL9E2xdEAAAQO6QcwMAAEKF4AYAAIQKwQ0AAAgVghsAABAqBDcAACBUCG4AAECoENwAAIBQIbgBAAChQnADAABCheAGAACEygG53gEASNdpp51mWrVqZSpXrmwee+wxU7FiRTNgwAAzatQoChcog6i5ARAKTz75pKlWrZpZvHixuffee82dd95pZs+enevdApAD3DgTQChqbvbt22feeeedyLx27dqZTp06mTFjxuR03wBkHzU3AEJBzVJeDRo0MBs3bszZ/gDIHYIbAKFQoUKFYs+LiorM/v37c7Y/AHKH4AYAAIQKwQ0AAAgVghsAABAq9JYCAAChQs0NAAAIFYIbAAAQKgQ3AAAgVAhuAABAqBDcAACAUCG4AQAAoUJwAwAAQoXgBgAAhArBDQAACBWCGwAAECoENwAAIFQIbgAAgAmT/wdcHdNkrUHvswAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -66,7 +66,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Final estimate: 0.5\n" + "Final estimate: 0.558\n" ] } ], @@ -91,7 +91,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Simulated P(Red): 0.35156\n", + "Simulated P(Red): 0.351385\n", "Exact P(Red): 0.35\n" ] }