{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# The Monty Hall Problem\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See the [Wikipedia entry](https://en.wikipedia.org/wiki/Monty_Hall_problem) for a summary of the problem.\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Random door selection\n", "\n", "***\n", "\n", "Here's some code to pick a door at random.\n", "\n", "See [Real Python's Generating Random Data in Python](https://realpython.com/python-random/) for more information." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "blue\n" ] } ], "source": [ "# Python provides a library called random to generate pseudo-random numbers and do stuff with them.\n", "import random\n", "\n", "# The three doors in a list.\n", "doors = ['red', 'green', 'blue']\n", "\n", "# Pick a random door.\n", "print(random.choice(doors))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Checking the randomness\n", "\n", "***\n", "\n", "The pick is meant to give a one third probability to each door. Let's pick 10,000 doors are see if that looks correct." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "First ten items: ['green', 'green', 'red', 'red', 'green', 'red', 'green', 'green', 'blue', 'red']\n", "Out of the 10000: 3324 were red, 3357 were green, and 3319 were blue.\n" ] } ], "source": [ "# 10,000 random doors.\n", "no_doors = 10000\n", "tenthous = [random.choice(doors) for i in range(no_doors)]\n", "\n", "# Count the number of each colour.\n", "red = tenthous.count('red')\n", "blue = tenthous.count('blue')\n", "green = tenthous.count('green')\n", "\n", "print(\"First ten items: \", tenthous[:10])\n", "print(f\"Out of the {no_doors}: {red} were red, {green} were green, and {blue} were blue.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Let's plot it and see that each door is picked about a third of the time." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# We'll just use pyplot for plotting.\n", "import matplotlib.pyplot as plt\n", "# Change the way plots look.\n", "plt.style.use('seaborn')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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4qKLLsrjjz9ey2cYqF69+y1btuT3v/99rr766tx0003p6emx+z7wmc98Jl/72td6Hw8ePNi57ycn271z3z+mT5+ezs7OJMmuXbsyatQo576fnGz3fX3uT/uo7unpyfDhw3sfDx48OMeOHatxojefYcOG5dprr83999+f2267LTfccEOqqkpTU1OSpKWlJfv27UtPT0/vLSL/eb6np6eusQe0iy++OM3N/3v31evZ98uf/89rOXWv3v2kSZPyjW98Iz/60Y9y1lln5bvf/a7d94GWlpYMHz48PT09uf766zNv3jznvp+cbPfOff9pbm7OggUL0tnZmYsvvti570ev3n1fn/vTPqqHDx+e/fv39z4+ceLEK/5CpFx7e3s+97nPpampKe3t7TnzzDOzd+/e3v++f//+vOMd7/ivX4v9+/e/4iDyxg0a9L+/FV9r3y9//j+v5Y379Kc/nYkTJ/b++Mknn7T7PvLvf/8711xzTS677LJ89rOfde770at379z3r2XLluXhhx/OokWLcvjw4d7nnfu+9/Ldf/SjH+3Tc3/aR/WUKVPy2GOPJUk2bdqU8847r+aJ3nweeOCBfOtb30qSPPfcc+np6cm0adOyfv36JMljjz2WD37wg5k0aVI2btyYw4cPZ9++fdmxY4dfjwZ53/ved8r7njJlSh599NHe137gAx+oc/QB79prr83mzZuTJI8//nje//73230f2LNnT2bPnp358+fn85//fBLnvr+cbPfOff/4xS9+kdWrVydJ3va2t6WpqSkTJ0507vvByXb/la98pU/PfVNVVVXffaRy//nXP7Zv356qqrJ06dKcc845dY/1pnLkyJHceOON2bVrV5qamnLDDTdk5MiRWbRoUY4ePZrx48dnyZIlGTx4cNauXZuf/vSnqaoq1113XS6++OK6xx+wdu7cma9//etZu3Ztnn766VPe98GDB7NgwYJ0d3dnyJAhWblyZdra2ur+OAPKy3e/devWdHZ2ZsiQIRk1alQ6OzszfPhwu2+wJUuW5KGHHsr48eN7n7v55puzZMkS576PnWz38+bNy/Lly537PnbgwIHceOON2bNnT44dO5YvfelLOeecc/x53w9OtvsxY8b06Z/3p31UAwDA6e60v/0DAABOd6IaAAAKiWoAACgkqgEAoJCoBgCAQqIaAAAKiWoAACj0fwDNh1t0/b+bmgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,4))\n", "ax.barh(['Red', 'Green', 'Blue'], [red, green, blue], color=['#FC4F30', '#6D904F', '#008FD5']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Simulate a game\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's simulate the game now with the following steps:\n", "\n", "1. Pick a door to put the car behind.\n", "2. Have the contestant pick a door.\n", "3. Have the show host open one of the other doors to reveal a goat.\n", "4. Ask the contestant if they want to switch.\n", "5. Figure out whether or not the contestant wins.\n", "\n", "The question we're looking to answer is whether staying with your original pick makes a difference." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def simulate(stay=True):\n", " \"\"\"A function to simulate a game and tell us if the contestant wins.\n", " The contestant's strategy is to stay with their original choice\n", " if the parameter stay is True, and otherwise they switch.\"\"\"\n", " \n", " # The three doors.\n", " doors = ['red', 'green', 'blue']\n", " \n", " # 1. Pick a door to put the car behind.\n", " car = random.choice(doors)\n", " \n", " # 2. Have the contestant pick a door.\n", " pick = random.choice(doors)\n", " \n", " # 3. Have the show host open one of the other doors to reveal a goat.\n", " canopen = [door for door in doors if door != car and door != pick]\n", " show = random.choice(canopen)\n", "\n", " # 4. Ask the contestant if they want to switch (specified by stay parameter).\n", " if not stay:\n", " # This is a bit hacky but gets the job done.\n", " pick = [door for door in doors if door != pick and door != show][0]\n", " \n", " # 5. Figure out whether or not the contestant wins.\n", " if pick == car:\n", " return True\n", " else:\n", " return False" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "We can now simulate a game in which the contestant stays with their original pick by running the following.\n", "\n", "A return value of True means they won the car, False means they didn't." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simulate(stay=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Simlulate ten thousand games\n", "\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's run the game 10,000 times where the contestant stays.\n", "\n", "We'll see how often they win." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "staying = [simulate(stay=True) for i in range(10000)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Plot the result of staying." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAD3CAYAAAAAGKInAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAOZklEQVR4nO3dcazVdf3H8de593a14Ba4LrbmLNFIXXMpQUPhWq1Fa5rM5ZZNb07XQFkqTgdmt1TuNFq2pLVGKctRmsyaf7iauTmlJG5FmNNCo1ytcIpA617EewE/v7+8ffBX+4U/PN8LPB5/cb733J339/1ll+f93rNLq5RSAgAAJEk6mh4AAAAmEoEMAAAVgQwAABWBDAAAFYEMAACVrqYHeK29e/dl586Xmh7jiDV16lvsv0H23yz7b5b9N8v+m2X/zejt7fm3xyfcHeSurs6mRzii2X+z7L9Z9t8s+2+W/TfL/ieWCRfIAADQJIEMAAAVgQwAABWBDAAAFYEMAAAVgQwAABWBDAAAFYEMAACVVimlND1Ebd+C05seAQCANtjx3XWNvv4h8z/pAQBAkwQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABUBDIAAFQEMgAAVAQyAABU/s9AHhoaypIlS9oxCwAANM4dZAAAqHS9nk967LHH8o1vfCNHHXVUpkyZkltuuSV79+7N1VdfnVJK9uzZk5tuuinvfe97s2bNmjzwwANptVr5xCc+kf7+/oN9DgAAHIJ6e3uaHuHfOuBALqVkYGAg99xzT4499tjcdddd+fa3v50PfvCD6enpyW233ZYtW7ZkZGQkW7ZsyU9+8pPcfffdabVaueSSSzJ37txMnz79jTgXAAAOIdu2DTf6+v8p0A/4LRY7d+7M5MmTc+yxxyZJZs2alT/+8Y/p6+vLrFmzcsUVV2TlypXp6OjIM888k61bt+aSSy7JZz/72fzjH//IX//61//fmQAAwBvogO8gT506NSMjI3nhhRcybdq0/OpXv8q73/3uDA0NZdq0aVm9enU2bdqUr3/967nhhhty0kkn5Y477kir1cr3vve9zJgx4404DwAAOCj+q0B+7LHHcv75548/XrhwYT7/+c+n1WrlbW97W2699da0Wq0sWbIkd911Vzo6OrJ48eKcfPLJmTNnTi688MKMjY3ltNNOG7/zDAAAE1GrlFKaHqK2b8HpTY8AAEAb7PjuukZf/6C9BxkAAA5nAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACqtUkppeojX2rZtuOkRjli9vT323yD7b5b9N8v+m2X/zbL/ZvT29vzb4+4gAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQKWr6QFe68rbFzQ9AkDjBj6zpukRAI5Y7iADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBARSADAEDlgAO5v78/TzzxRJJkbGwsM2fOzJ133jn+8YsuuiiLFy/O2NjYwZsSAADa5IADee7cufnNb36TJNm4cWPmzp2bRx55JEkyOjqa5557Lt/61rfS3d19UAcFAIB2OOBAPvPMM8cD+dFHH80FF1yQ4eHhDA8PZ9OmTZk9e3Y+8pGPZHR0NMuWLcuXvvSlXHbZZTn33HPz1FNPHfQTAACAg6nrQD/h1FNPzZ///OeUUvLrX/8611xzTebMmZP169fn6aefzrx58zI0NDT+/He+8525+eabs3bt2tx77725+eabD+oJAByOent7mh6hEUfqeU8U9t8s+584DjiQOzo6cvLJJ2fdunXp7e1Nd3d3+vr68sgjj2Tz5s3p7+/f7/mnnHJKkuQd73hHfvvb3x6cqQEOc9u2DTc9Qtv19vYckec9Udh/s+y/Gf/pm5LX9VsszjrrrKxatSrz5s1LksycOTO///3vkyRTpkzZ77mtVuv1vAQAADTidQXymWeemY0bN+bss89OknR3d6enpyezZs06qMMBAEC7tUoppekhalfevqDpEQAaN/CZNU2P0HZ+xNws+2+W/TfjoL7FAgAADlcCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqXU0P8Forr7o/27YNNz3GEau3t8f+G2T/zbJ/ABJ3kAEAYD8CGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqAhkAACoCGQAAKgIZAAAqrVJKaXoIAACYKNxBBgCAikAGAICKQAYAgIpABgCAikAGAICKQAYAgIpABgCASlfTA7zqlVdeyY033pinn3463d3dGRwczLve9a6mxzqs/O53v8vXvva1rFmzJn/5y1+ybNmytFqtvOc978mXv/zldHR0ZO3atfnhD3+Yrq6uXH755fnwhz+cl19+Odddd122b9+eSZMmZcWKFTnmmGOaPp1Dxp49e/KFL3whf//73zM2NpbLL788J510kv23yb59+/LFL34xzz77bDo7O3PrrbemlGL/bbZ9+/acf/75Wb16dbq6uuy/zRYsWJCenp4kyXHHHZdFixa5Bm20atWqPPzww9mzZ08uvPDCzJ492/4nujJBPPjgg2Xp0qWllFI2bdpUFi1a1PBEh5fvfOc75ZxzzikXXHBBKaWUhQsXlg0bNpRSShkYGCg/+9nPygsvvFDOOeecMjo6Wv75z3+O/3n16tVl5cqVpZRSHnjggbJ8+fLGzuNQdN9995XBwcFSSik7duwoZ599tv230UMPPVSWLVtWSillw4YNZdGiRfbfZmNjY+WKK64oH/vYx8qWLVvsv81efvnlct555+13zDVonw0bNpSFCxeWffv2lZGRkbJy5Ur7PwRMmLdYbNy4MfPmzUuSvP/978+TTz7Z8ESHl+OPPz7f/OY3xx8/9dRTmT17dpKkr68v69evzxNPPJHTTz893d3d6enpyfHHH5/Nmzfvd236+vryy1/+spFzOFR9/OMfz1VXXTX+uLOz0/7b6KMf/WiWL1+eJNm6dWve/va323+brVixIp/+9Kczbdq0JL7+tNvmzZuze/fuXHrppenv78/jjz/uGrTRL37xi8yYMSOLFy/OokWL8qEPfcj+DwETJpBHRkYyefLk8cednZ3Zu3dvgxMdXubPn5+urn+9o6aUklarlSSZNGlShoeHMzIyMv4juFePj4yM7Hf81efy35s0aVImT56ckZGRXHnllbn66qvtv826urqydOnSLF++PPPnz7f/Nvrxj3+cY445Zvwf+MTXn3Y7+uijc9lll+XOO+/MTTfdlGuvvdY1aKOdO3fmySefzO23327/h5AJE8iTJ0/Orl27xh+/8sor+wUdB1dHx78u/a5du/LWt771f12DXbt2paenZ7/jrz6XA/Pcc8+lv78/5513Xs4991z7b8CKFSvy4IMPZmBgIKOjo+PH7f+N9aMf/Sjr16/PxRdfnD/84Q9ZunRpduzYMf5x+3/jnXDCCfnkJz+ZVquVE044IVOmTMn27dvHP+4avLGmTJmSuXPnpru7O9OnT89RRx21X+Ta/8Q0YQL5jDPOyLp165Ikjz/+eGbMmNHwRIe3U089NUNDQ0mSdevW5QMf+EBOO+20bNy4MaOjoxkeHs6f/vSnzJgxI2eccUYeffTR8efOnDmzydEPOS+++GIuvfTSXHfddfnUpz6VxP7b6f7778+qVauSJG9+85vTarXyvve9z/7b5Ac/+EG+//3vZ82aNTnllFOyYsWK9PX12X8b3XffffnKV76SJHn++eczMjKSs846yzVok5kzZ+bnP/95Sil5/vnns3v37syZM8f+J7hWKaU0PUTyr99i8cwzz6SUkltuuSUnnnhi02MdVv72t7/lmmuuydq1a/Pss89mYGAge/bsyfTp0zM4OJjOzs6sXbs29957b0opWbhwYebPn5/du3dn6dKl2bZtW970pjfltttuS29vb9Onc8gYHBzMT3/600yfPn382A033JDBwUH7b4OXXnop119/fV588cXs3bs3n/vc53LiiSf6+9+Aiy++ODfeeGM6Ojrsv43GxsZy/fXXZ+vWrWm1Wrn22mszdepU16CNvvrVr2ZoaCillCxZsiTHHXec/U9wEyaQAQBgIpgwb7EAAICJQCADAEBFIAMAQEUgAwBARSADAEBFIAMAQEUgAwBA5X8ABXfYKs7svd8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,4))\n", "ax.barh(['Win', 'Lose'], [staying.count(True), staying.count(False)], color=['#6D904F', '#FC4F30']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Looks like when the contestant stays, they win only about a third of the time.\n", "\n", "Let's run the game 10,000 times where the contestant switches.\n", "\n", "We'll see how often they win." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "switching = [simulate(stay=False) for i in range(10000)]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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278aI+6///5q2bJlVVVV1datW6vFixfXfKK3jptvvrk688wzq/POO6+qqqpatGhRtXnz5qqqqqqnp6f61a9+Vb344ovVmWeeWQ0ODlYvv/zy8LfXrVtXrVmzpqqqqrrvvvuqlStX1nYd49Fdd91V9fb2VlVVVbt3767OOOMM+zfRr3/962r58uVVVVXV5s2bq8WLF9u/iYaGhqpLL720+sxnPlNt377d9k306quvVmefffYhz9m/OTZv3lwtWrSoOnjwYDUwMFCtWbPG9jVZsWJFdccdd4z6/mPmbR5btmzJvHnzkiQf+chH8sQTT9R8oreOY489Nt///veHHz/55JOZNWtWkqSrqyubNm3K448/nlNPPTXt7e3p6OjIsccem23bth3y89LV1ZXf//73tVzDePXZz342X/va14Yft7a22r+JPv3pT2flypVJkh07duSoo46yfxOtXr06X/ziFzN16tQkvvY007Zt27Jv375ceOGF6e7uzmOPPWb/Jvnd736X6dOnZ8mSJVm8eHE+8YlP2L4Gf/rTn7J9+/Z84QtfGPX9x0xMDwwMZOLEicOPW1tbc+DAgRpP9NYxf/78tLX9+x09VVWl0WgkSSZMmJD+/v4MDAwM/3Xg688PDAwc8vzrr+W/N2HChEycODEDAwO57LLLcvnll9u/ydra2rJs2bKsXLky8+fPt3+T3H333ZkyZcrwb0qJrz3N9I53vCMXXXRRbr311lx33XW58sor7d8ke/bsyRNPPJGbbrrJ9jVau3ZtlixZkmT0v/aMmZieOHFi9u7dO/z4tddeOyQAGTktLf/+ad+7d2/e/e53/5/99+7dm46OjkOef/21HJ7nn38+3d3dOfvss3PWWWfZvwarV6/O/fffn56engwODg4/b//R8/Of/zybNm3KBRdckKeeeirLli3L7t27hz9u+9F13HHH5fOf/3wajUaOO+64TJo0Kbt27Rr+uP1Hz6RJkzJ37ty0t7dn2rRpOfLIIw8JMtuPvpdffjnPPvtsPv7xjycZ/e4ZMzF92mmnZePGjUmSxx57LNOnT6/5RG9dJ598cvr6+pIkGzduzEc/+tGccsop2bJlSwYHB9Pf35+//vWvmT59ek477bQ8+OCDw6+dMWNGnUcfd1566aVceOGFueqqq3LuuecmsX8z3XvvvVm7dm2S5J3vfGcajUY+/OEP278JfvrTn+YnP/lJ1q9fn5NOOimrV69OV1eX7Zvkrrvuyre+9a0kyQsvvJCBgYGcfvrp9m+CGTNm5Le//W2qqsoLL7yQffv2Zfbs2bZvoocffjhz5swZfjzav+82qqqqRudSDs/r/5rHM888k6qqsmrVqhx//PF1H+st4x//+EeuuOKKbNiwIc8991x6enqyf//+TJs2Lb29vWltbc2GDRty5513pqqqLFq0KPPnz8++ffuybNmy7Ny5M0cccURuvPHGdHZ21n0540Zvb29++ctfZtq0acPPXXPNNent7bV/E7zyyiu5+uqr89JLL+XAgQO5+OKLc/zxx/v132QXXHBBVqxYkZaWFts3ydDQUK6++urs2LEjjUYjV155ZSZPnmz/Jvn2t7+dvr6+VFWVpUuX5phjjrF9E91yyy1pa2vLwoULk2TUu2fMxDQAAIw3Y+ZtHgAAMN6IaQAAKCSmAQCgkJgGAIBCYhoAAAqJaQAAKCSmAQCg0P8A4byLSHgLo1sAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,4))\n", "ax.barh(['Win', 'Lose'], [switching.count(True), switching.count(False)], color=['#6D904F', '#FC4F30']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Looks like you win two thirds of the time if you switch." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## End" ] } ], "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": 4 }