-
-
Save maxibor/9d896b69c999b2feca4f6375be779aac to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "3f7d6c14-52d7-4393-b9ba-471391d4083e", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"RendererRegistry.enable('mimetype')" | |
] | |
}, | |
"execution_count": 1, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"import numpy as np\n", | |
"import altair as alt\n", | |
"import pandas as pd\n", | |
"alt.renderers.enable('mimetype')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "fd63e0f7-ce44-4821-a26d-2a439226194e", | |
"metadata": {}, | |
"source": [ | |
"I've been recently reminded of the Monty Hall problem, and I thought I would try to show how to solve it with simulations in Python.\n", | |
"\n", | |
"\n", | |
"Inspired from the 60's American TV game show [Let's Make a Deal](https://en.wikipedia.org/wiki/Let%27s_Make_a_Deal), the principle is the following:\n", | |
"A participant of the game is faced with three doors, behing one of which is a big prize (a car), and behind the two others, a goat.\n", | |
"\n", | |
"After first choosing the door, the host (Monty Hall) of the show reveals that one of the two other door was hiding a goat. \n", | |
"*What is the best strategy for winning the car ?* \n", | |
"Keeping the original choice, or changing of door ?\n", | |
"\n", | |
"It turns out that... \n", | |
"Read further to find out ๐" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "50a65b64-2b3e-40fa-bd81-5f5129d0ed52", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"nb_games = 10000 # The number of games we're going to simulate" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "13178a19-a169-45e2-9716-6ea65d76a156", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"games = []\n", | |
"for i in range(nb_games):\n", | |
" game = np.repeat('๐', 3)\n", | |
" prize = np.random.randint(0,3,1) # the door behind which the car is hidden\n", | |
" game[prize]='๐' \n", | |
" games.append(game)\n", | |
" " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "e382cc17-3def-4b86-ac59-1e26986c91ec", | |
"metadata": {}, | |
"source": [ | |
"### Strategy: keep door" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "0225ff38-277d-4386-a53b-ba0c24b57bb9", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"wins=0 # win counter\n", | |
"for i in range(nb_games):\n", | |
" doors = [0,1,2]\n", | |
" player_door_choice = int(np.random.choice(doors, 1)) # the player initial's door choice\n", | |
" doors.remove(player_door_choice) # doors not chosen by player\n", | |
" for j in doors: # Monty Hall reveals that behind one of the door not chosen is a goat\n", | |
" if games[i][j] == '๐':\n", | |
" goat_door = j\n", | |
" if games[i][player_door_choice] == '๐': # The player keeps his initial door choice\n", | |
" wins += 1\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"id": "51c52dc4-ccf9-4707-9c9d-a5e33cc51b54", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Winning percentage: 32.1%\n" | |
] | |
} | |
], | |
"source": [ | |
"print(f\"Winning percentage: {round(wins/nb_games*100,1)}%\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "cda90f6a-0ee8-4343-94ab-0bab300ff13e", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.vegalite.v4+json": { | |
"$schema": "https://vega.github.io/schema/vega-lite/v4.8.1.json", | |
"config": { | |
"axis": { | |
"labelFontSize": 20 | |
}, | |
"title": { | |
"anchor": "start", | |
"color": "gray", | |
"font": "Courier", | |
"fontSize": 20 | |
}, | |
"view": { | |
"continuousHeight": 300, | |
"continuousWidth": 400 | |
} | |
}, | |
"data": { | |
"name": "data-7a9d477b1bb7597b956184f6c25a0da8" | |
}, | |
"datasets": { | |
"data-7a9d477b1bb7597b956184f6c25a0da8": [ | |
{ | |
"x": "๐", | |
"y": 32 | |
}, | |
{ | |
"x": "๐", | |
"y": 68 | |
} | |
] | |
}, | |
"encoding": { | |
"x": { | |
"axis": { | |
"title": null | |
}, | |
"field": "x", | |
"type": "nominal" | |
}, | |
"y": { | |
"axis": { | |
"title": "outcome %" | |
}, | |
"field": "y", | |
"type": "quantitative" | |
} | |
}, | |
"mark": { | |
"size": 30, | |
"type": "bar" | |
}, | |
"title": "Strategy: keep same door", | |
"width": 200 | |
}, | |
"image/png": "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", | |
"text/plain": [ | |
"<VegaLite 4 object>\n", | |
"\n", | |
"If you see this message, it means the renderer has not been properly enabled\n", | |
"for the frontend that you are using. For more information, see\n", | |
"https://altair-viz.github.io/user_guide/troubleshooting.html\n" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"x = ['๐','๐']\n", | |
"y = [round(wins/nb_games*100, 0), 100 - round(wins/nb_games*100, 0)]\n", | |
"source = pd.DataFrame({'x':x, 'y':y})\n", | |
"(alt.Chart(source).mark_bar(size=30).encode(\n", | |
" x=alt.X('x', axis=alt.Axis(title=None)),\n", | |
" y=alt.Y('y', axis=alt.Axis(title='outcome %'))\n", | |
").properties(width=200, title='Strategy: keep same door')\n", | |
".configure_axis(labelFontSize=20)\n", | |
".configure_title(\n", | |
" fontSize=20,\n", | |
" font='Courier',\n", | |
" anchor='start',\n", | |
" color='gray'\n", | |
"))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "2397ffbc-7c28-440c-8c53-7b5fe9a2ba12", | |
"metadata": {}, | |
"source": [ | |
"### Strategy: change door" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "46326d7e-c76f-4aee-9ac2-27f81b65f2d2", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"wins=0\n", | |
"for i in range(nb_games):\n", | |
" doors = [0,1,2]\n", | |
" player_door_choice = int(np.random.choice(doors, 1)) # the player initial's door choice\n", | |
" doors.remove(player_door_choice) # doors not chosen\n", | |
" for j in doors: # Monty Hall reveals that behind one of the door not chosen is a goat\n", | |
" if games[i][j] == '๐':\n", | |
" goat_door = j\n", | |
" doors.remove(goat_door) # the player changes its door choice\n", | |
" if games[i][doors[0]] == '๐':\n", | |
" wins += 1" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"id": "3a28cef7-a80a-4233-915e-bec10d27c0e9", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Winning percentage: 66.7%\n" | |
] | |
} | |
], | |
"source": [ | |
"print(f\"Winning percentage: {round(wins/nb_games*100,1)}%\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"id": "661b3401-4fa4-4b93-9957-ed1cd57be69d", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.vegalite.v4+json": { | |
"$schema": "https://vega.github.io/schema/vega-lite/v4.8.1.json", | |
"config": { | |
"axis": { | |
"labelFontSize": 20 | |
}, | |
"title": { | |
"anchor": "start", | |
"color": "gray", | |
"font": "Courier", | |
"fontSize": 20 | |
}, | |
"view": { | |
"continuousHeight": 300, | |
"continuousWidth": 400 | |
} | |
}, | |
"data": { | |
"name": "data-6dce8ed0d6e14bdcf30fb362724e0857" | |
}, | |
"datasets": { | |
"data-6dce8ed0d6e14bdcf30fb362724e0857": [ | |
{ | |
"x": "๐", | |
"y": 66 | |
}, | |
{ | |
"x": "๐", | |
"y": 34 | |
} | |
] | |
}, | |
"encoding": { | |
"x": { | |
"axis": { | |
"title": null | |
}, | |
"field": "x", | |
"type": "nominal" | |
}, | |
"y": { | |
"axis": { | |
"title": "outcome %" | |
}, | |
"field": "y", | |
"type": "quantitative" | |
} | |
}, | |
"mark": { | |
"size": 30, | |
"type": "bar" | |
}, | |
"title": "Strategy: change door", | |
"width": 200 | |
}, | |
"image/png": "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", | |
"text/plain": [ | |
"<VegaLite 4 object>\n", | |
"\n", | |
"If you see this message, it means the renderer has not been properly enabled\n", | |
"for the frontend that you are using. For more information, see\n", | |
"https://altair-viz.github.io/user_guide/troubleshooting.html\n" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"x = ['๐','๐']\n", | |
"y = [int(wins/nb_games*100), 100 - int(wins/nb_games*100)]\n", | |
"source = pd.DataFrame({'x':x, 'y':y})\n", | |
"(alt.Chart(source).mark_bar(size=30).encode(\n", | |
" x=alt.X('x', axis=alt.Axis(title=None)),\n", | |
" y=alt.Y('y', axis=alt.Axis(title='outcome %'))\n", | |
").properties(width=200, title='Strategy: change door')\n", | |
".configure_axis(labelFontSize=20)\n", | |
".configure_title(\n", | |
" fontSize=20,\n", | |
" font='Courier',\n", | |
" anchor='start',\n", | |
" color='gray'\n", | |
"))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "7c2e8693-3639-4745-a78b-db43b36d0328", | |
"metadata": {}, | |
"source": [ | |
"As I showed above, the **door changing strategy is much better** with a 66.6% change of winning, vs 33.3% if we keep the original door.\n", | |
"\n", | |
"If you want to learn more about the Monty Hall problem, and how to prove using the Baye's theorem, have a reat at the [wikipedia page](https://en.wikipedia.org/wiki/Monty_Hall_problem)\n", | |
"\n", | |
"Finally, if you want to make it interactive with JavaScript P5, please watch the Coding Train video ๐\n", | |
"\n", | |
"\n", | |
"<html>\n", | |
" <body>\n", | |
" <iframe src=\"https://www.youtube.com/embed/0zac-cDzJwA\"\n", | |
" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen></iframe>\n", | |
" </body>\n", | |
"</html>" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python [conda env:root] *", | |
"language": "python", | |
"name": "conda-root-py" | |
}, | |
"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.9.12" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment