|
39 | 39 | },
|
40 | 40 | {
|
41 | 41 | "cell_type": "code",
|
42 |
| - "execution_count": null, |
| 42 | + "execution_count": 9, |
43 | 43 | "metadata": {},
|
44 | 44 | "outputs": [],
|
45 | 45 | "source": [
|
46 |
| - "# a)" |
| 46 | + "# a)\n", |
| 47 | + "\n", |
| 48 | + "import numpy as np\n", |
| 49 | + "\n", |
| 50 | + "def biased_dice():\n", |
| 51 | + " probabilities = np.arange(1, 9)\n", |
| 52 | + " probabilities = probabilities / probabilities.sum()\n", |
| 53 | + " while True:\n", |
| 54 | + " yield np.random.choice(8, p=probabilities) + 1" |
47 | 55 | ]
|
48 | 56 | },
|
49 | 57 | {
|
50 | 58 | "cell_type": "code",
|
51 |
| - "execution_count": null, |
| 59 | + "execution_count": 10, |
52 | 60 | "metadata": {},
|
53 |
| - "outputs": [], |
| 61 | + "outputs": [ |
| 62 | + { |
| 63 | + "data": { |
| 64 | + "image/png": "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jPnYfX1z4cIF3X777Xrsscf0wAMP2D2O323btk3jx49X7969dfnyZU2fPl1Dhw7V559/rtDQULvH84ubb75Zv/vd79S+fXtJ0vLly3Xffffps88+U9euXW2ezr/S09O1aNEi9ejRw+5R/Kpr167auHGjd79x48Y2TuN/BQUFuvPOOzVw4ED97W9/U2RkpL788sta/db9upSenq6Kigrv/uHDhzVkyBA9+OCDNk7lP7///e/19ttva/ny5eratav279+vxx57TC6XS5MmTbJ7vIBDENkkISFBCQkJdo9Ra9LS0nz2ly5dqsjISGVkZOiee+6xaSr/Gj58uM/+zJkztXDhQu3Zsyeggqi4uFhjxozR4sWL9dprr9k9jl8FBQUF5KtCV/z+97+X2+3W0qVLvcfatWtn30B+1qpVK5/93/3ud7r11lvVv39/mybyr927d+u+++7TL3/5S0nf/bt77733tH//fpsnC0y8ZYY64fF4JEnh4eE2T1I7KioqtGbNGl24cEFxcXF2j+NX48eP1y9/+UsNHjzY7lH87tixY4qJiVFsbKwefvhhnThxwu6R/Oqjjz5Sr1699OCDDyoyMlJ33HGHFi9ebPdYtaK8vFwrV67U448/7tdfwG2nu+66S5s2bdIXX3whSfrHP/6hnTt36t5777V5ssDEK0SodZZlafLkybrrrrvUrVs3u8fxq0OHDikuLk6lpaX6yU9+orVr16pLly52j+U3a9as0YEDB5Senm73KH7Xp08fvfvuu7rtttt05swZvfbaa+rXr5+OHDmiiIgIu8fzixMnTmjhwoWaPHmyXnzxRe3bt08TJ06U0+nUf/3Xf9k9nl+tW7dO58+f19ixY+0exW+ef/55eTwederUSY0bN1ZFRYVmzpypRx55xO7RAhJBhFr3zDPP6ODBg9q5c6fdo/hdx44dlZmZqfPnz+vPf/6zkpOTtW3btoCIopycHE2aNEnr169X06ZN7R7H777/lnX37t0VFxenW2+9VcuXL9fkyZNtnMx/Kisr1atXL82aNUuSdMcdd+jIkSNauHBhwAXRkiVLlJCQoJiYGLtH8Zv3339fK1eu1OrVq9W1a1dlZmYqJSVFMTExSk5Otnu8gEMQoVZNmDBBH330kbZv366bb77Z7nH8rkmTJt6bqnv16qX09HT94Q9/0DvvvGPzZDcuIyNDeXl5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\n", |
| 65 | + "text/plain": [ |
| 66 | + "<Figure size 640x480 with 1 Axes>" |
| 67 | + ] |
| 68 | + }, |
| 69 | + "metadata": {}, |
| 70 | + "output_type": "display_data" |
| 71 | + } |
| 72 | + ], |
54 | 73 | "source": [
|
55 |
| - "# b)" |
| 74 | + "# b)\n", |
| 75 | + "\n", |
| 76 | + "import matplotlib.pyplot as plt\n", |
| 77 | + "\n", |
| 78 | + "probabilities = np.arange(1, 9)\n", |
| 79 | + "probabilities = probabilities / probabilities.sum()\n", |
| 80 | + "\n", |
| 81 | + "results = np.random.choice(8, size=10000, p=probabilities) + 1\n", |
| 82 | + "\n", |
| 83 | + "plt.hist(results, bins=np.arange(1, 10), density=False, edgecolor='black')\n", |
| 84 | + "plt.xticks(np.arange(1, 9))\n", |
| 85 | + "plt.xlabel('Face value')\n", |
| 86 | + "plt.ylabel('Count')\n", |
| 87 | + "plt.show()" |
56 | 88 | ]
|
57 | 89 | },
|
58 | 90 | {
|
59 | 91 | "cell_type": "code",
|
60 |
| - "execution_count": null, |
| 92 | + "execution_count": 11, |
61 | 93 | "metadata": {},
|
62 |
| - "outputs": [], |
| 94 | + "outputs": [ |
| 95 | + { |
| 96 | + "name": "stdout", |
| 97 | + "output_type": "stream", |
| 98 | + "text": [ |
| 99 | + "3\n", |
| 100 | + "6\n", |
| 101 | + "8\n", |
| 102 | + "7\n", |
| 103 | + "7\n", |
| 104 | + "6\n", |
| 105 | + "8\n", |
| 106 | + "7\n", |
| 107 | + "5\n", |
| 108 | + "7\n", |
| 109 | + "6\n", |
| 110 | + "5\n", |
| 111 | + "6\n", |
| 112 | + "5\n", |
| 113 | + "3\n", |
| 114 | + "7\n", |
| 115 | + "6\n", |
| 116 | + "6\n", |
| 117 | + "4\n", |
| 118 | + "7\n", |
| 119 | + "7\n", |
| 120 | + "2\n", |
| 121 | + "7\n", |
| 122 | + "8\n", |
| 123 | + "2\n", |
| 124 | + "8\n", |
| 125 | + "8\n", |
| 126 | + "4\n", |
| 127 | + "3\n", |
| 128 | + "8\n", |
| 129 | + "2\n", |
| 130 | + "8\n", |
| 131 | + "7\n", |
| 132 | + "6\n", |
| 133 | + "6\n", |
| 134 | + "8\n", |
| 135 | + "7\n", |
| 136 | + "5\n", |
| 137 | + "5\n", |
| 138 | + "4\n", |
| 139 | + "4\n", |
| 140 | + "6\n", |
| 141 | + "2\n", |
| 142 | + "4\n", |
| 143 | + "7\n", |
| 144 | + "6\n", |
| 145 | + "4\n", |
| 146 | + "5\n", |
| 147 | + "2\n", |
| 148 | + "8\n", |
| 149 | + "4\n", |
| 150 | + "7\n", |
| 151 | + "7\n", |
| 152 | + "8\n", |
| 153 | + "8\n", |
| 154 | + "8\n", |
| 155 | + "6\n", |
| 156 | + "6\n", |
| 157 | + "4\n", |
| 158 | + "2\n", |
| 159 | + "3\n", |
| 160 | + "5\n", |
| 161 | + "6\n", |
| 162 | + "3\n", |
| 163 | + "4\n", |
| 164 | + "6\n", |
| 165 | + "3\n", |
| 166 | + "8\n", |
| 167 | + "8\n", |
| 168 | + "4\n", |
| 169 | + "8\n", |
| 170 | + "6\n", |
| 171 | + "4\n", |
| 172 | + "8\n", |
| 173 | + "8\n", |
| 174 | + "8\n", |
| 175 | + "7\n", |
| 176 | + "4\n", |
| 177 | + "5\n", |
| 178 | + "8\n", |
| 179 | + "5\n", |
| 180 | + "7\n", |
| 181 | + "5\n", |
| 182 | + "5\n", |
| 183 | + "6\n", |
| 184 | + "8\n", |
| 185 | + "5\n", |
| 186 | + "5\n", |
| 187 | + "5\n", |
| 188 | + "5\n", |
| 189 | + "6\n", |
| 190 | + "2\n", |
| 191 | + "7\n", |
| 192 | + "8\n", |
| 193 | + "8\n", |
| 194 | + "8\n", |
| 195 | + "6\n", |
| 196 | + "8\n", |
| 197 | + "2\n", |
| 198 | + "5\n", |
| 199 | + "8\n", |
| 200 | + "8\n", |
| 201 | + "8\n", |
| 202 | + "8\n", |
| 203 | + "7\n", |
| 204 | + "5\n", |
| 205 | + "7\n", |
| 206 | + "6\n", |
| 207 | + "6\n", |
| 208 | + "8\n", |
| 209 | + "7\n", |
| 210 | + "7\n", |
| 211 | + "1\n", |
| 212 | + "0.003526999999991176\n" |
| 213 | + ] |
| 214 | + } |
| 215 | + ], |
63 | 216 | "source": [
|
64 |
| - "# c)" |
| 217 | + "# c)\n", |
| 218 | + "\n", |
| 219 | + "import numpy as np\n", |
| 220 | + "import time\n", |
| 221 | + "\n", |
| 222 | + "def modded_biased_dice():\n", |
| 223 | + " probabilities = np.arange(1, 9)\n", |
| 224 | + " probabilities = probabilities / probabilities.sum()\n", |
| 225 | + " rolls = set()\n", |
| 226 | + " start_time = time.monotonic()\n", |
| 227 | + " while len(rolls) < 8:\n", |
| 228 | + " roll = np.random.choice(8, p=probabilities) + 1\n", |
| 229 | + " rolls.add(roll)\n", |
| 230 | + " yield roll\n", |
| 231 | + " yield time.monotonic() - start_time\n", |
| 232 | + "\n", |
| 233 | + "results = modded_biased_dice()\n", |
| 234 | + "for result in results:\n", |
| 235 | + " print(result)" |
65 | 236 | ]
|
66 | 237 | },
|
67 | 238 | {
|
|
124 | 295 | "name": "python",
|
125 | 296 | "nbconvert_exporter": "python",
|
126 | 297 | "pygments_lexer": "ipython3",
|
127 |
| - "version": "3.10.6" |
| 298 | + "version": "3.9.13" |
128 | 299 | }
|
129 | 300 | },
|
130 | 301 | "nbformat": 4,
|
|
0 commit comments