{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "`numpy` has useful functions for generating random numbers and maninulating arrays.\n", "`matplotlib` has useful functions for plotting things." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will explicitly model the process of picking a bridge and then picking a creature, rejecting any trial in which a gnome is picked.\n", "\n", "`numpy.random.choice` is a convenient way to pick from a set of objects with specified weights (i.e draw from a [categorical distribution](http://en.wikipedia.org/wiki/Categorical_distribution)). " ] }, { "cell_type": "code", "collapsed": false, "input": [ "bridges = ['TGGGG', 'TTGGG', 'GGGGG']\n", "ps = [0.2, 0.2, 0.6]\n", "trials = []\n", "\n", "while len(trials) < 100000:\n", " bridge = np.random.choice(bridges, p=ps)\n", " creature = np.random.choice(list(bridge))\n", " if creature == 'T':\n", " if bridge.count('T') == 1:\n", " trials.append(1)\n", " else:\n", " trials.append(0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "`trials` is now a list of 0's and 1's that we need to convert into a list of \"fraction of safe passages so far\"." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cumulative_fractions = np.cumsum(trials) / (np.arange(len(trials)) + 1.)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.semilogx(cumulative_fractions)\n", "plt.ylim(0, 1)\n", "plt.axhline(1. / 3, color='red', linestyle='--')\n", "plt.xlabel('Number of trials')\n", "plt.ylabel('Cumulative fraction of safe passages');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ntdPslqtcrWdPM1Lv5KJI3rJzp/Tbbxm/bo/HvJZRo1L+PJ9/XnryyfTPffSoufuUUYeVtEyebMrI\nKqTQw5oAACAASURBVFbM2nEAALgtw4S8e/fuGjt2rP76669Uz124cEFjxoxR9+7dHQsuLzp/3iSQ\n7dq5HUnW1Klj2uvdf7+Uxl+na2JjTX14ZqOhHTqYr5Ejs38tO11Qbr9dattWmjgxa+fO6Qi5ZBLY\n//zH1LMfO5azczlt0CDzXrp82UziTE/r1tJtt0lvvJG8bf9+084yvcnG2f1wU6uWtHEj3VIAAPlP\nhgsDRUdHq3nz5vLx8dGzzz6rm266SZJ04MABvfvuu7IsS+Hh4brx2vYYLsmNhYFWrTL1qvmt1lcy\nNdj9+5s66vfeczsaY9cuM+l0377M9/39d5NQf/RR9ibUNmhgVgJt2jTj/aKizHU2bbKfGCauKtm6\nddbjupZTiyJ5i2WZHvxFi5okeMuWjPc/dkxq1sz8XVeoIJUpYxZjmjTJbEvsFx4SYvrCr1tnOu/k\nhzsFAIDCKVcXBqpYsaLCwsLUqFEjjRo1Sr1791bv3r01evRoNWnSRGFhYXkmGc8t+a1+/Goej6kj\nX7cu7yR7mdWPX61sWfNBYsCArJeuXLpk+mL/32fKDN14oynv+de/7E0kzU7Nc0YSF0Vas8Y75/O2\n334zP5ePPpIeeSTz/atVM5NyhwwxNfo1apjR9YoVTYmQZM73wQfSM8+YD2fUgQMACpMMR8ivdvbs\nWR05ckSWZal27doql1arCpflxgh5kybSrFneGQl1yzffmC4UO3aYZMlNgwebxCwrLf8efVQqWVKa\nPt3+Mbt3Sw88YNrp2REfbyYJDhxorpeRH380pS5Hj9qPJzNr1phr79tnWvpl5MIFk/DOmJH5vt7w\n1VfSSy9JYWH2j7l40STZHTtK585JS5eav4v27U2JSlycucsQFCSFh5u7E7fe6thLAAAgR3J1hPxq\n5cqV0y233KJWrVrlyWQ8N5w6ZZKuli3djiRnWrUyo5X/+IdZ2dBNWRkhT/T226YTSlbKhrK6imaR\nItL775sVPE+ezHhfb9SPX6tLF/uLIu3da0aXX33VuzGk58CBrN8N8POT3nnH9MVPPLZ+fbM8/ciR\nyeecNs3cybFzJwMAgILCdkLuTTNmzFBQUJD8/PzUsmVLbcmgCHXTpk3q2bOnKleurJIlS6pJkyb6\n4IMPcjHaZBs2mBG9xJrX/GzYMDOamltJXFosyyTkGXVYSUuZMuYuxeOPZ9w+72qZtTxMS7Nm0lNP\nZV664o0OK2mxuyjSgQNSp06mnGf/fu/Hca3sluf06GFKXNq3T942bpyZ4PnBB+acLVuaGv4yZbwX\nLwAAeV2uJ+SLFi3SoEGDNHr0aEVERKhNmzbq2rWrjh8/nub+27ZtU5MmTbRs2TLt379fzzzzjJ56\n6il98sknuRx5/q4fv5aPj/ThhyaJy+5qijl18qQZDc2oS0d6unUz5Q/Dh9vbP6sj5InGjJEOHZKW\nLEl/HydGyCWzKNLw4Zl/IDhwwLwvJ0wwHyCysxBPVhw4kP0R7HnzUv4bKl3adJX59NPkJJ9kHABQ\n2NiuIfeWVq1aqWnTppo1a1bStjp16ujee+/VpEmTbJ2jX79+io+P19KlS1Nsd7qGvEYN6fPPC9aE\ns9WrzUS6XbvSXsHSSWvWmGQsNDR7x//xh0myr03y0lK1qvngERSU9ets3y717m2S+vLlUz/fuLGJ\noXnzrJ87M5cvm/kKAwdKjz2W9j7duklPPy3ddZdpx/nww+axU6pUkbZt8978A8uSnnjCzCcoSP+2\nAAAFl2s15N4QFxen8PBwBQcHp9geHBysrVu32j7PuXPncr2OPTLSTEzzVieNvKJbN5NsPvlkzpem\nz6o9e7JeP361MmWk//7XlK7ExKS/3++/m+erV8/edVq3NhNCQ0JSP3f5snT4sFSvXvbOnZmiRU3d\n9YgR0okTae+TWH/t42N+HmPGpL9vTp07Z74CArx3To9HmjOHZBwAUHjlakJ++vRpxcfHq+I1S+lV\nqFBBUVFRts6xcuX/b+/uw6Kq8z6Of2ZQkBEyTVQMEx9LNMQVNVHzIaMwtU1vu+90u7UstavswdXM\nNNO00tpcs3J7uMy8Wu+yttzUNRNRwsfUWDc1Wsvn1EEtt8JEBc79xwlkZHiemTPMvF/XNVdy+J1z\nvoO/8MuP7/n+Vmn9+vUaM2aMN0IsVVqa2UkjEDcdmTvX/IGj2C8tfKIq9eOXS0kxV8cnTSp9zO7d\nZrJnr8Zsnz3b7E6zYoXr8e++M1ffHY6qX7s8HTuav8UYN67kD005OebDxoUr/x06SGPHuv/hobL+\n85+S5S9ZWWa5SiD+fwAAgFVq1OOJmzdv1ogRI/TKK68osZRWJzNmzCj6c58+fdSnKjvIuJGWJt1y\ni0cu5XfCwqT33jN3VIyPl5KSfHPfr76SJk6s/nXmzTPjXrnSfHDwclWtHy/O4TBXcYcPN78+haUr\nvuqZPXWq1Lmz+fc0fPil4998Y+7CGhJy6di0aebX46OPpKFDq37P//kf87299NKlY9WpHwcAoKZK\nT09XemlbTHuATxPyhg0bKiQkRNnZ2S7Hs7OzFV3Ok32bNm3SbbfdplmzZmns2LGljiuekHtKQYHZ\nYaX49t+B5rrrzDro//ovacsWKTbWu/c7f95cXfZEclevnvR//2cmn19+adY4F1eVDivu9O5tJqlj\nx5p9tG02s6uJNx7ovFxoqFm6MnCg+RuBwl8yuWtBWKeO+Xc5dKj5Q1ZUVNXu+dVX5m8FhgyRevQw\nj3lyAyQAAGqKyxd5Z86c6dHr+7RkJTQ0VJ07d9batWtdjqempiqpjGXZjIwMDRgwQDNnztTDDz/s\n7TBL2LPHTPqs3kTH2wYMkJ54wkz6yqrJ9oSsLKlVK89tZNOjh/ng44gR5qY+xXlihbzQs8+au02+\n+675sbc6rLjTpYu5SdH48ZeOldYTPClJ+sMfpAcfrNq9fvrJnAOLFpn3/PXXsu8HAACqzudtDydM\nmKB33nlHixYtUlZWlh555BE5nU6N+60txJQpU9S/f/+i8enp6UpJSdEDDzygu+66S06nU06nU6dO\nnfJZzIHU7rA848ebq6r//d/e3TTIE/Xjl5syxVy1Lt5b3TA8m5DXqWNuGf/HP0qHDvl+m/cZM8yv\nXWGDobJWrGfNMt/7smWVv88335i/NRkyxPxB4MknL92PkhUAADzL5wn5nXfeqfnz52v27Nnq1KmT\ntmzZotWrV6vZb20bnE6nDhw4UDR+yZIlys3N1Ysvvqjo6Gg1bdpUTZs2Vbdu3XwW87p1wZOQ22zm\njor5+WYbOm+pbocVd0JCzGR54cJLvdUPH5YiIz3b0rFjR7M/+B/+YF7/2ms9d+3yhIdLS5aYK98n\nTpRd012njjn24YfNzXbKkpcn/fjjpY+LJ96vvCJ98IH02WfmdarSOhIAAJTO533IvckbfcgvXjQf\n4Nu/330P6kD1n/+YZQ8PPlj1soey9O9vrjKnpHj+2qtWmTH/85/S5s3Sa6+ZPc89KT/f7Lpz+rRv\ndse83FNPmfXdGRnmbqW1a5c+9sknzcR9+fLSu6MsXmyuqO/aZW7WM3my+d+pU83Pf/KJucvmNdeY\nP0wBABDManQf8ppo+3az1jmYknHJ7PG9apWZpH32mWevbRhm2YWnV8gLDRxollqMHu3ZcpXiQkLM\nB0mtetB3+nRzRbtVq7KTccncnv7gQfOh0NLs2WPWjBc+onF5acrtt0uDB3vnawkAQLCrUW0PrRBM\n9eOXa9nSrFUeMkTasMFztdJOp5mUl9NYp1rmzJG6d5c2bXJt2+dJV19dsqOLr9SubW43/+WX5Y8t\n3tayZ0/3JTZZWWZpytNPSx9+6L5WfNGiSw93AgAAz2GFvBzBnJBLZgL30ktmf29PPUdbWD/uzc1l\nwsLMhPX8ee9sae8PWrc2H76tiLg46ZlnzC40Fy6U/Pw335h9zv/6V7Nbzfffm9cvrnZts9sQAADw\nLBLyMpw9a65A9upldSTWuvtuczOa3/9eys2t/vW80WHFnbZtzS3kfdWW0N898IDUtKlZf17cuXPm\nA6ItW0pdu5oJeUVKYQAAgGeQkJdh40ZzdbVuXasjsd4zz5jJ3P33l9y+vbK80WGlNBERvrlPTWCz\nmWUnf/2r+ZufQvv2mcl4rd8K2KZOdf08AADwLhLyMqSlmd1AINntZgu9f/9beu656l3LVyvkKCkq\nyvx7/N//vdQK8ZtvXOvF7fZLO4ECAADvIyEvQ7DXj1/O4TDb373xhtmXuirOn5e++47dHq3Uv790\n333SXXeZ7RuzssxNgAAAgDVIyEvxww9m7/GuXa2OxL9ER0srVph9vrdvr/z5WVlmeUSdOp6PDRU3\nfbq5Ej5jxqVdOQEAgDVIyEuxYYPZYYQH20pKSDB7Wt9xh3TkSOXO9WX9OEpX2Ef97bfNPvOl7fYJ\nAAC8j4S8FOvWUa5SlkGDzJ02b7vNdcv18lA/7j8aNzaT8osX3fcmBwAAvkFCXgoe6CzfY49JKSlS\ncrL0008VO4cVcv/Su7d08iTdaAAAsBIJuRtHjpgJJv2ry2azSXPnSklJZmL+yy/ln/PVV6yQ+xuH\nw+oIAAAIbiTkbqSlSf36mQ+9oWw2mzR/vvnDy6BBZW+t7nSaXT2aNvVdfAAAAP6OlNMN2h1Wjt0u\nvf66dM015oOepe3mWbg6brP5Nj4AAAB/RkJ+GcMgIa8Ku93s2HHlldKwYdKFCyXH/Otf1I8DAABc\njoT8Ml9/bfbIbtnS6khqnlq1zG3ZQ0Kk4cOlvDzXz1M/DgAAUBIJ+WXorlI9tWtLy5ZJZ89KI0ea\nNeOFaHkIAABQEgn5ZShXqb6wMOnjj6UTJ6QxY6SCArOE5dtvpfbtrY4OAADAv5CQF5OXJ33+udlh\nBdUTHi6tXCn9+9/SQw+ZpUAtWpjlQAAAALiEhLyYnTvNTiGNGlkdSWCoW1davVr68ktp1Cge6AQA\nAHCHhLwYylU874orpDVrzFaHXbpYHQ0AAID/qWV1AP4kLU364x+tjiLw1K8v7dhhdRQAAAD+yWYY\nhmF1EJ5is9lU1bdz7pxZqnL8uBQZ6eHAAAAAEDCqk3O6Q8nKbzZvNlvykYwDAADAl0jIf7NuHfXj\nAAAA8D0S8t/wQCcAAACsQA25pDNnzHaHp0+bm9oAAAAApaGG3AvS06UePUjGAQAA4Hsk5KJcBQAA\nANYhIRcJOQAAAKwT9An5sWPSyZNSQoLVkQAAACAYBX1CnpYm9e0r2YP+KwEAAAArBH0ampYm9e9v\ndRQAAAAIVkGdkBsG9eMAAACwVlAn5Pv2maUqrVtbHQkAAACCVVAn5OvWmavjNpvVkQAAACBYBXVC\nTrkKAAAArGYzPLnvp8Uqs41pfr4UFSXt3StFR3s5MAAAAASMyuScFRG0K+T//KeZiJOMAwAAwEpB\nm5BTrgIAAAB/ELQJeeEDnQAAAICVgrKGPDfXrB8/elS68kofBAYAAICAQQ25B2zdKsXFkYwDAADA\nekGZkKelSf37Wx0FAAAAEMQJOfXjAAAA8AdBV0P+009STIx06pRUp46PAgMAAEDAoIa8mj7/XOrW\njWQcAAAA/iHoEnLKVQAAAOBPgjIh54FOAAAA+IugqiF3Os12h6dOSSEhPgwMAAAAAYMa8mpYv17q\n3ZtkHAAAAP4jqBLydeuoHwcAAIB/CZqE3DB4oBMAAAD+J2gS8v37pbw86brrrI4EAAAAuCRoEvLC\n1XGbzepIAAAAgEuCLiEHAAAA/ElQtD0sKJAaNZJ27ZJiYiwIDAAAAAGDtodV8K9/SVddRTIOAAAA\n/xMUCTnlKgAAAPBXQZOQ9+9vdRQAAABASQFfQ37hgtSwoXTokNSggTVxAQAAIHBQQ15J27ZJbduS\njAMAAMA/BXxCTv04AAAA/BkJOQAAAGChgK4hz8mRmjSRTp6UHA4LAwMAAEDAoIa8EjIypC5dSMYB\nAADgvwI6IV+3jnIVAAAA+LeATsipHwcAAIC/C9ga8pMnpTZtpB9+kGrVsjgwAAAABAxqyCtowwap\nd2+ScQAAAPi3gE3IKVcBAABATUBCDgAAAFgoIBPygwels2el9u2tjgQAAAAoW0Am5GlpUr9+ks1m\ndSQAAABA2QI2IadcBQAAADVBwLU9LCgw1KSJtH271Ly51REBAAAg0ND2sBx79kiRkSTjAAAAqBkC\nLiFft45yFQAAANQcAZeQUz8OAACAmiTgasivuMLQd99JUVFWRwMAAIBARA15OVq2JBkHAABAzeHz\nhHzhwoVq0aKFwsPDlZiYqE2bNpU5fvfu3erdu7ccDodiYmI0a9asMsdTrgIAAICaxKcJ+bJly/To\no49q2rRp2rVrl5KSkpSSkqKjR4+6Hf/zzz/r5ptvVnR0tHbu3KmXX35ZL774oubNm1fqPUjIcbn0\n9HSrQ4AfYl7gcswJuMO8gC/4NCGfN2+e7rnnHo0ePVrXXnutFixYoOjoaP3lL39xO37p0qXKzc3V\nkiVLFBcXp6FDh2ry5MllJuS9enkretRUfDOFO8wLXI45AXeYF/AFnyXkFy5cUGZmppKTk12OJycn\na8uWLW7P2bp1q3r16qWwsDCX8cePH9fhw4fdnhMR4bmYPc3b/1NX9/pVOb8y51RkbHljyvp8Tf2m\nybwof2xV50VNnROSd2P3xLWZF9ZgXpQ/tqr/TjAvvHdt5kX5fJaQnz59Wvn5+WrcuLHL8UaNGsnp\ndLo9x+l0lhhf+HFp5/gzEq/yx5KQ+9/1a/K8qKlzQuIfWOaFe8yL8sf6e+LlDcyL8sf6/bwwfOTY\nsWOGzWYzNm7c6HJ85syZxrXXXuv2nOTkZGP06NEuxw4fPmzYbDZj27ZtJca3atXKkMSLFy9evHjx\n4sWLl9derVq18lySbBhGLflIw4YNFRISouzsbJfj2dnZio6OdntOkyZNSqyEF57fpEmTEuO/++47\nD0ULAAAA+IbPSlZCQ0PVuXNnrV271uV4amqqkpKS3J7TvXt3bdy4UefPn3cZf/XVV6t58+ZejRcA\nAADwBZ92WZkwYYLeeecdLVq0SFlZWXrkkUfkdDo1btw4SdKUKVPUv3//ovHDhw+Xw+HQqFGjtHfv\nXn388ceaO3euJkyY4MuwAQAAAK/xWcmKJN1555364YcfNHv2bJ04cULXX3+9Vq9erWbNmkkyH9Q8\ncOBA0fgrrrhCqampevDBB5WYmKgGDRpo4sSJeuyxx3wZNgAAAOA1NsMwDKuDAAAAAIKVT0tWrLJ6\n9Wpdd911atu2bambECH4DB48WA0aNNCwYcOsDgV+4ujRo+rTp4/at2+vhIQELV++3OqQ4CeSkpKU\nkJCg9u3ba9q0aVaHAz9SUFCgLl268G8JisTGxqpjx47q1KmTbqrgFvIBv0Kel5enuLg4bdiwQQ0a\nNFBiYqLS0tLcdmlBcElPT1dOTo6WLFmiDz/80Opw4AecTqdOnjyp+Ph4nTp1Sp07d9a+fftUp04d\nq0ODxXJychQREaGCggL17NlTCxYsUGJiotVhwQ+89tpr2rRpk/Lz8/XBBx9YHQ78QIsWLbR37145\nHI4KnxPwK+Tbt29XXFycrr76aoWHh+uOO+7QqlWrrA4LfqBPnz6K8OetXeFzTZo0UXx8vCQpKipK\n9evX1+nTpy2OCv6g8HvF+fPnlZeXpyuvvNLiiOAPsrOztXz5co0ZM0YBvr6JSqrsfAj4hPz48eNF\nD41KUkxMjI4dO2ZhRABqgp07dyovL08xMTFWhwI/0a1bNzVu3Fh9+/ZV69atrQ4HfmDy5Ml69tln\nZbcHfDqFSrDZbOrVq5e6du2qpUuXVuicgJ9BNpvN6hAA1DA//PCDRo4cqUWLFlkdCvzIF198oWPH\njmnr1q01ept1eEZGRoZsNpu6devG6jhcbN68WZmZmVqxYoWef/557d69u9xz/D4hz8jI0ODBgxUT\nEyO73a4lS5aUGLNw4UK1aNFC4eHhSkxM1KZNm4o+17RpUx09erTo46NHj7LiFQCqOy8K8QNbYPHE\nvDh//ryGDBmiJ598UjfccIOvQocXeer7hSRFRkZq0KBB2rlzp7fDhpdVd15s3bpVqampatGihe66\n6y59+umnuv/++335FuAFnvh+UbgDfZMmTTRgwABlZmaWe1+/T8jPnj2r+Ph4vfzyywoPDy+RQC1b\ntkyPPvqopk2bpl27dikpKUkpKSlFSXiXLl20d+9eff/99zp37pz+/ve/67bbbrPircCDqjsvCrGq\nEViqOy8Mw9CoUaPUr18/jRgxwoq3AC+o7rz46aefip4lyM3N1WeffaZOnTr5/H3As6o7LyZPnqzv\nv/9eBw8e1Pvvv6+UlBS99dZbVrwVeFB158Wvv/6qX375RZL5MPj69evVoUOH8m9s1CARERHGkiVL\nXI517drVGDNmjMuxNm3aGFOmTCn6eOXKlUbbtm2N1q1bG6+++qpPYoXvVHVe3HTTTUZUVJThcDiM\nmJgYY9u2bT6JF75RlXmxceNGw263G506dTISEhKMhIQEY8+ePT6LGd5XlXmxf/9+o3PnzkZ8fLwR\nHx9vzJ0712fxwjeq+u9IofT0dGPYsGFejRG+V9XvFx07djQ6duxodOjQwViwYEGF7uXTnTo97cKF\nC8rMzNTjjz/ucjw5OVlbtmwp+njgwIEaOHCgr8ODRSo6L9atW+fr0GChisyLnj17Kj8/34rwYJGK\nzIuWLVtSohJkKvrvSKHevXurd+/evgoPFqno94tdu3ZV+tp+X7JSltOnTys/P1+NGzd2Od6oUSM5\nnU6LooLVmBdwh3kBd5gXcId5AXe8OS9qdEIOAAAA1HQ1OiFv2LChQkJClJ2d7XI8Ozu76AlXBB/m\nBdxhXsAd5gXcYV7AHW/OixqdkIeGhqpz585au3aty/HU1FQlJSVZFBWsxryAO8wLuMO8gDvMC7jj\nzXnh9w91nj17Vt9++60kqaCgQIcPH9auXbt01VVXqVmzZpowYYLuvvtude3aVUlJSXr99dfldDo1\nbtw4iyOHNzEv4A7zAu4wL+AO8wLuWDYvPNMYxns2bNhg2Gw2w2azGXa7vejP99xzT9GYhQsXGrGx\nsUZYWJiRmJhobNy40cKI4QvMC7jDvIA7zAu4w7yAO1bNC5thsDMKAAAAYJUaXUMOAAAA1HQk5AAA\nAICFSMgBAAAAC5GQAwAAABYiIQcAAAAsREIOAAAAWIiEHAAAALAQCTkAAABgIRJyAKgBRo0apUGD\nBlkdhotPPvlEbdq0Ue3atXXvvfdW+3ozZszQ9ddfX6lzYmNj9dJLL1X73gBgJRJyACjHqFGjZLfb\nNXv2bJfj6enpstvt+vHHH70eg81mk81m8/p9KmP06NEaNmyYjhw5opdfftntmMokzJMmTVJGRkal\nYvDHrwsAVBYJOQCUw2azqU6dOnrxxRd1+vRpS2IwDMMr183Ly6vSeWfOnNGPP/6o5ORkRUdHKzIy\n0u24iiTLBQUFKigoUN26dVW/fv0qxQMANRkJOQBUQN++fRUbG6tZs2aVOsbdivmhQ4dkt9uVmZnp\nMmbNmjX63e9+J4fDoRtvvFHHjh3T+vXrFR8fr8jISA0ePFhnzpwpuo7NZpNhGJo9e7aaNGmiyMhI\n3XvvvcrNzXWJ4YUXXlDr1q3lcDgUHx+vpUuXlojl/fffV79+/eRwOPTmm2+6fS9nzpzRyJEj1aBB\nAzkcDt188836+uuvi97DVVddJUnq16+f7Ha725XtPn366PDhw5o0aZLsdrtCQkIkSe+8844iIyP1\n6aefqkOHDgoLC1NWVlaJkpUdO3YoOTlZUVFRqlevnnr16qVt27aV+vWXpDfeeENt27ZVeHi4oqKi\ndOuttyo/P7/McwDAaiTkAFAOwzBkt9s1Z84cvf766zpw4EC1rzljxgy98sor+uKLL3TmzBndeeed\nmj17thYtWqT09HTt2bNHM2fOdInh888/1+7du7V+/Xp99NFHWrt2rSZPnlw0ZurUqVq8eLEWLlyo\nrKwsTZkyRWPHjtXq1atd7j1lyhQ99NBDysrK0u233+42vlGjRmnHjh1asWKFtm/fLofDoVtvvVW5\nubnq0aOH9u7dK0n6+OOP5XQ61b179xLXWL58uWJiYvT000/L6XTqxIkTRZ/Lzc3V7Nmz9dZbbykr\nK0vNmzcvcX5OTo5GjhypTZs2aceOHUpISNCAAQNKLRHauXOnHnroIc2cOVP79u1TWlqaUlJSyvhb\nAAD/UMvqAACgJrDZbEpJSVGPHj00depUvffee9W63qxZs9SjRw9J0rhx4zR+/HhlZmYqISFBkjRy\n5Ej97W9/czmnVq1aWrx4sRwOh+Li4jR37lyNHj1ac+bMUUFBgf785z8rNTW16LrNmzfXF198odde\ne00DBgwous7DDz+sIUOGlBrbt99+q5UrVyojI0M9e/aUJL377ru65pprtHTpUo0ePVpRUVGSpAYN\nGqhRo0Zur1O/fn2FhIQoMjKyxJj8/Hy9+uqr6tSpU6lx9O3b1+XjBQsW6KOPPtKnn36qESNGlBh/\n5MgR1a1bV4MGDVJERISaNWum+Pj4Uq8PAP6ChBwAKqCwhnvu3Lnq3r27Jk2aVK3rFU8UC5PV4uUa\njRo10smTJ0uc43A4ij6+4YYbdOHCBe3fv1/nzp1Tbm6ubrnlFpe67YsXL6pFixYu10lMTCwztqys\nLNntdpdV7yuuuELXX399UdlKddWqVavoh4/SnDx5Uk899ZTS09OVnZ2t/Px8nTt3TkePHnU7Pjk5\nWc2bN1eLFi10yy23KDk5WUOGDFFERIRHYgYAbyEhB4BK6NKli4YOHarHH39cTz31lMvn7HazCrD4\nA5gXL150e53atWsX/bkwgS6ssS48VlBQ4HJOWQ92Fo5dtWqVrrnmmlLvJUl169Yt9TplKSzd8YSw\nsLByH/gcOXKkTp06pfnz5ys2NlahoaG66aabdOHCBbfjIyIilJmZqYyMDKWmpur555/Xk08+3aUS\nLgAAAqZJREFUqR07dig6OtojcQOAN1BDDgCV9Nxzz2njxo1as2aNy/HCMo7jx48XHdu1a5fH7rt7\n9279+uuvRR9v27ZNoaGhatWqleLi4hQWFqZDhw6pZcuWLq9mzZpV6j7t2rVTQUGBtmzZUnTs559/\n1p49exQXF1epa4WGhlb5ocrNmzdr/PjxSklJUbt27RQREeFSh+5OSEiI+vbtq+eee05fffWVzp49\nq3/84x9Vuj8A+Aor5ABQSa1atdKYMWM0f/58l+OtW7dWs2bNNGPGDM2ZM0cHDx4s0bu8OvLy8nTv\nvfdq+vTpOnbsmJ544gmNGTNG4eHhkqSJEydq4sSJMgxDvXr1Uk5OjrZt26aQkBDdf//9Fb5PmzZt\ndPvtt2vs2LF68803Va9ePU2dOlX16tXT8OHDKxVzbGysMjIyNGLECIWGhqphw4YVPrdt27Z69913\n1bVrV+Xk5Ojxxx9XaGioy5jivzVYtWqV9u/frxtvvFENGjTQhg0b9Msvv6hdu3aVihkAfI0VcgAo\nh7vNZ6ZPn67atWu7HK9du7bef/99HThwQB07dtTMmTP1/PPPlzjXXamGuzHFj9lsNvXp00ft27dX\n3759NWTIEPXv318vvPBC0ZhZs2ZpxowZ+tOf/qQOHTooOTlZy5cvV8uWLcu8tzuLFy9W165dNXjw\nYHXr1k25ublas2aNwsLCKnWtZ555RkePHlWrVq3UuHHjcr8GxY+//fbbysnJUefOnTV8+HDdd999\nio2NLXFOofr16+uTTz7RzTffrHbt2mnevHlatGhR0UOuAOCvbIa3dpsAAAAAUC5WyAEAAAALkZAD\nAAAAFiIhBwAAACxEQg4AAABYiIQcAAAAsBAJOQAAAGAhEnIAAADAQiTkAAAAgIVIyAEAAAAL/T8G\nuW8hnIxsfgAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simulation takes a while, in part because we need to generate about $1 / (0.2 * 0.2 + 0.4 * 0.2) \\approx 8.3$ trials per troll captured (can you see why?) and in part because `np.random.choice` is just slow. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit np.random.choice(bridges, p=ps)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10000 loops, best of 3: 143 \u00b5s per loop\n" ] } ], "prompt_number": 5 } ], "metadata": {} } ] }