{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Chapter11MonteCarlo",
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "i_4QVqdV96a6"
},
"source": [
"# Monte Carlo Simulation\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "woaZjkArTMAh"
},
"source": [
"## History\n",
"\n",
"The Monte Carlo Method was devised by Stanislaw Ulam during World War II. Ulam was a Polish mathematician who greatly contributed to the development of the hydrogen bomb. Ulam also contributed to the Manhattan Project, which was developing nuclear weapons during WWII.\n",
"\n",
"As they were finishing up the project, Stanislaw Ulam became afflicted with a viral encephalitis that caused him to go into a coma. While he was recovering from this potentially brain-damaging virus, Ulam frequently played the game of Solitaire. He wanted to deduce the probability of him winning a game, so he played the game hundreds of times and documented his results. This was the first step towards the creation of the Monte Carlo Simulation.\n",
"\n",
"Stanislaw Ulam realized that the existence of computers made such statistical methods incredibly practical. He then took his idea to his coworker and boss, John von Neumann, who recognized the significance in his discovery. They both proceeded to develop the idea further until they created the simulation that is now used widely in computational sciences. The Monte Carlo Method is based on chance and probability, which is connected to gambling. They named it after the giant gambling Capital city in Europe, Monaco.\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cgPaFiQD0U_P"
},
"source": [
"## Introduction\n",
"\n",
"The Monte Carlo Method is designed to make predictions that take every imaginable factor into account and display every possible outcome.\n",
"\n",
"It is an effective means to portray the impact of risk and uncertainty when it comes to making decisions. Because we all make decisions and take risks every day, Monte Carlo is wildly popular among a plethora of different fields. This includes Astronomy, Climate Change, Engineering Financing, Weather, various scientific fields, and so much more. It is a safe bet to assume that any career path that involves making decisions will utilize Monte Carlo in some capacity.\n",
"\n",
"Because we all face ambiguity and variability in our lives, using Monte Carlo simulations is a surefire way to allow for better decision making in the face of absolute uncertainty."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gZAnmh5LlmwX"
},
"source": [
"## Examples"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VXEn-1oj8CG_"
},
"source": [
"##Coin Flip\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hbqQ17BOlqGN"
},
"source": [
"We would like to show to probability of heads in a series of 10 coin flips. The first thing we would do is define our coin flip. In this example, we will be importing random that that we may use random.uniform to generate a random real number between 0 and 1. We assign any number greater than 0.5 to be true(heads) and any number that is not greater than 0.5 to false(tails).\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Lf26LB3L2WeF"
},
"source": [
"import random\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def coin_toss():\n",
"\n",
" x = random.uniform(0, 1)\n",
"\n",
" if x > 0.5:\n",
" # Heads for True\n",
" return True\n",
" else:\n",
" # Tails for False\n",
" return False"
],
"execution_count": 49,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "pOs7h-W92ZvV"
},
"source": [
"Our next step is to create our experiment. We define $N$ as our number of tosses for our experiment and create a list to store the results. When this for loop is ran, it will generate a 1 if we got heads and a 0 if we got tails and store the result in our list. After the loop is complete, we sum up our list then calculate the mean."
]
},
{
"cell_type": "code",
"metadata": {
"id": "eZk3tZHD2fGs"
},
"source": [
"\n",
"# Number of tosses in each experiment\n",
"N = 10\n",
" # List for the results\n",
"results = []\n",
"\n",
" # Toss the coin N times and store in a list\n",
"for i in range(N):\n",
" result = coin_toss()\n",
" results.append(result)\n",
"\n",
" n_heads = sum(results)\n",
" p_heads = n_heads/N"
],
"execution_count": 50,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "J3-RqfPq2gLU"
},
"source": [
"Now that we have our experiment running, we would like to conduct our experiment multiple times to get an accurate probabilty. We create a new list named prob that will store the results for every complete experiment. Then we create a for loop that runs our experiment as many times as we'd like. In this example, we are running it 10000 times. We've added \"prob.append(p_heads)\" into our experiment as this will allow us to store our results in our new list. After our 10000 experiments are complete, we calculate the overall mean to give us our probability of heads."
]
},
{
"cell_type": "code",
"metadata": {
"id": "-1yIRglU2jUr",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "15b34eb0-dcf4-4f4d-cce1-e17ac0c9e5cb"
},
"source": [
"prob = []\n",
"\n",
"# Number of times the experimemnt is conducted\n",
"for i in range(10000):\n",
"\n",
" # Number of tosses in each experiment\n",
" N = 10\n",
" # List for the results\n",
" results = []\n",
"\n",
" # Toss the coin N times and store in a list\n",
" for i in range(N):\n",
" result = coin_toss()\n",
" results.append(result)\n",
"\n",
" n_heads = sum(results)\n",
" p_heads = n_heads/N\n",
" prob.append(p_heads)\n",
"\n",
"# average the probability of heads over the number of experiments\n",
"p_heads_FINAL = sum(prob)/10000\n",
"print(\"Probability of heads is {:.5f}\\n\".format(p_heads_FINAL))"
],
"execution_count": 51,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Probability of heads is 0.50073\n",
"\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "X4wU_D782px0"
},
"source": [
"If we import matplotlib.pyplot, we can create a histogram that will show us the distrubution of head to tails throughout our experiment."
]
},
{
"cell_type": "code",
"metadata": {
"id": "oXGlxiZQ2q7b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 501
},
"outputId": "fbca945e-4b11-4ae8-fd92-059efac0f55e"
},
"source": [
"plt.hist(prob, bins=[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0, 1.1])"
],
"execution_count": 52,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([ 10., 101., 430., 1186., 2016., 2499., 2027., 1146., 474.,\n",
" 91., 20.]),\n",
" array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1]),\n",
" )"
]
},
"metadata": {},
"execution_count": 52
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGdCAYAAAAMm0nCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAi/klEQVR4nO3de3SMd+LH8U+EGbSZCdVkkm3qetxvLW1MXXqRI0i1Tu1plaJdZbVJzyGtW1mUrtj0pu0qp9d0z1J0D7YrmoootgRtVhZBtogNhwmtyqCEyPP7Y4/5dSrKpLnMN96vc55zzPN8n5nvfI923ibPTEIsy7IEAABgkDo1PQEAAIBAETAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjFO3pidQVcrKynT06FGFhYUpJCSkpqcDAACug2VZOn36tKKjo1WnztXfZ6m1AXP06FHFxMTU9DQAAEAFHD58WLfddttVj9fagAkLC5P0vwVwOBw1PBsAAHA9vF6vYmJifK/jV1NrA+byj40cDgcBAwCAYa51+QcX8QIAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4AQVMSkqK7rrrLoWFhSkiIkKDBw9Wfn6+35j77rtPISEhftu4ceP8xhQWFiohIUENGzZURESEJk6cqNLSUr8xGzZs0J133im73a5WrVopLS2tYs8QAADUOgEFzMaNG5WYmKitW7cqMzNTFy9eVL9+/XT27Fm/cWPGjNGxY8d8W2pqqu/YpUuXlJCQoAsXLmjLli36+OOPlZaWphkzZvjGFBQUKCEhQffff79yc3M1fvx4Pf300/riiy9+5dMFAAC1QYhlWVZFTz5x4oQiIiK0ceNG9enTR9L/3oHp2rWr5s+fX+45n3/+uR588EEdPXpUkZGRkqRFixZp8uTJOnHihGw2myZPnqz09HTt3r3bd97QoUN16tQpZWRkXNfcvF6vnE6niouL+WWOAAAY4npfv3/VNTDFxcWSpMaNG/vtX7x4sZo0aaKOHTtq6tSp+vHHH33HsrOz1alTJ1+8SFJ8fLy8Xq/y8vJ8Y+Li4vzuMz4+XtnZ2VedS0lJibxer98GAABqp7oVPbGsrEzjx49Xz5491bFjR9/+YcOGqWnTpoqOjtbOnTs1efJk5efna8WKFZIkj8fjFy+SfLc9Hs8vjvF6vTp37pwaNGhwxXxSUlL00ksvVfTpAKhCzaak1/QUrunQvISangKAAFQ4YBITE7V792599dVXfvvHjh3r+3OnTp0UFRWlvn376sCBA2rZsmXFZ3oNU6dOVXJysu+21+tVTExMlT0eAACoORX6EVJSUpJWr16tL7/8Urfddtsvjo2NjZUk7d+/X5LkcrlUVFTkN+bybZfL9YtjHA5Hue++SJLdbpfD4fDbAABA7RRQwFiWpaSkJK1cuVLr169X8+bNr3lObm6uJCkqKkqS5Ha7tWvXLh0/ftw3JjMzUw6HQ+3bt/eNycrK8rufzMxMud3uQKYLAABqqYACJjExUX/961+1ZMkShYWFyePxyOPx6Ny5c5KkAwcOaM6cOcrJydGhQ4f02WefaeTIkerTp486d+4sSerXr5/at2+vESNG6N///re++OILTZ8+XYmJibLb7ZKkcePG6eDBg5o0aZL27dund955R8uXL9eECRMq+ekDAAATBRQwCxcuVHFxse677z5FRUX5tmXLlkmSbDab1q1bp379+qlt27Z6/vnnNWTIEP3jH//w3UdoaKhWr16t0NBQud1uPfHEExo5cqRmz57tG9O8eXOlp6crMzNTXbp00Wuvvab3339f8fHxlfS0AQCAyX7V98AEM74HBggefAoJwPWqlu+BAQAAqAkEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIwTUMCkpKTorrvuUlhYmCIiIjR48GDl5+f7jTl//rwSExN1yy236Oabb9aQIUNUVFTkN6awsFAJCQlq2LChIiIiNHHiRJWWlvqN2bBhg+68807Z7Xa1atVKaWlpFXuGAACg1qkbyOCNGzcqMTFRd911l0pLS/Xiiy+qX79+2rNnj2666SZJ0oQJE5Senq5PP/1UTqdTSUlJeuSRR7R582ZJ0qVLl5SQkCCXy6UtW7bo2LFjGjlypOrVq6e5c+dKkgoKCpSQkKBx48Zp8eLFysrK0tNPP62oqCjFx8dX8hIAgNRsSnpNT+GaDs1LqOkpAEEjxLIsq6InnzhxQhEREdq4caP69Omj4uJi3XrrrVqyZIl++9vfSpL27dundu3aKTs7Wz169NDnn3+uBx98UEePHlVkZKQkadGiRZo8ebJOnDghm82myZMnKz09Xbt37/Y91tChQ3Xq1CllZGRc19y8Xq+cTqeKi4vlcDgq+hSBoGfCCy8qBwGDG8H1vn7/qmtgiouLJUmNGzeWJOXk5OjixYuKi4vzjWnbtq1uv/12ZWdnS5Kys7PVqVMnX7xIUnx8vLxer/Ly8nxjfnofl8dcvg8AAHBjC+hHSD9VVlam8ePHq2fPnurYsaMkyePxyGazKTw83G9sZGSkPB6Pb8xP4+Xy8cvHfmmM1+vVuXPn1KBBgyvmU1JSopKSEt9tr9db0acGAACCXIXfgUlMTNTu3bu1dOnSypxPhaWkpMjpdPq2mJiYmp4SAACoIhUKmKSkJK1evVpffvmlbrvtNt9+l8ulCxcu6NSpU37ji4qK5HK5fGN+/qmky7evNcbhcJT77oskTZ06VcXFxb7t8OHDFXlqAADAAAEFjGVZSkpK0sqVK7V+/Xo1b97c73i3bt1Ur149ZWVl+fbl5+ersLBQbrdbkuR2u7Vr1y4dP37cNyYzM1MOh0Pt27f3jfnpfVwec/k+ymO32+VwOPw2AABQOwV0DUxiYqKWLFmiv//97woLC/Nds+J0OtWgQQM5nU6NHj1aycnJaty4sRwOh5577jm53W716NFDktSvXz+1b99eI0aMUGpqqjwej6ZPn67ExETZ7XZJ0rhx4/TnP/9ZkyZN0u9+9zutX79ey5cvV3o6n7YAAAABvgOzcOFCFRcX67777lNUVJRvW7ZsmW/MG2+8oQcffFBDhgxRnz595HK5tGLFCt/x0NBQrV69WqGhoXK73XriiSc0cuRIzZ492zemefPmSk9PV2Zmprp06aLXXntN77//Pt8BAwAAJP3K74EJZnwPDG4UfA/MjYPvgcGNoFq+BwYAAKAmEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACME3DAbNq0SYMGDVJ0dLRCQkK0atUqv+NPPvmkQkJC/Lb+/fv7jTl58qSGDx8uh8Oh8PBwjR49WmfOnPEbs3PnTvXu3Vv169dXTEyMUlNTA392AACgVgo4YM6ePasuXbpowYIFVx3Tv39/HTt2zLd98sknfseHDx+uvLw8ZWZmavXq1dq0aZPGjh3rO+71etWvXz81bdpUOTk5euWVVzRr1iy9++67gU4XAADUQnUDPWHAgAEaMGDAL46x2+1yuVzlHtu7d68yMjL09ddfq3v37pKkt99+WwMHDtSrr76q6OhoLV68WBcuXNCHH34om82mDh06KDc3V6+//rpf6AAAgBtTlVwDs2HDBkVERKhNmzZ65pln9P333/uOZWdnKzw83BcvkhQXF6c6depo27ZtvjF9+vSRzWbzjYmPj1d+fr5++OGHch+zpKREXq/XbwMAALVTpQdM//799Ze//EVZWVn605/+pI0bN2rAgAG6dOmSJMnj8SgiIsLvnLp166px48byeDy+MZGRkX5jLt++PObnUlJS5HQ6fVtMTExlPzUAABAkAv4R0rUMHTrU9+dOnTqpc+fOatmypTZs2KC+fftW9sP5TJ06VcnJyb7bXq+XiAEAoJaq8o9Rt2jRQk2aNNH+/fslSS6XS8ePH/cbU1paqpMnT/qum3G5XCoqKvIbc/n21a6tsdvtcjgcfhsAAKidqjxgjhw5ou+//15RUVGSJLfbrVOnTiknJ8c3Zv369SorK1NsbKxvzKZNm3Tx4kXfmMzMTLVp00aNGjWq6ikDAIAgF3DAnDlzRrm5ucrNzZUkFRQUKDc3V4WFhTpz5owmTpyorVu36tChQ8rKytLDDz+sVq1aKT4+XpLUrl079e/fX2PGjNH27du1efNmJSUlaejQoYqOjpYkDRs2TDabTaNHj1ZeXp6WLVumN9980+9HRAAA4MYVcMB88803uuOOO3THHXdIkpKTk3XHHXdoxowZCg0N1c6dO/XQQw+pdevWGj16tLp166Z//vOfstvtvvtYvHix2rZtq759+2rgwIHq1auX33e8OJ1OrV27VgUFBerWrZuef/55zZgxg49QAwAASVKIZVlWTU+iKni9XjmdThUXF3M9DGq1ZlPSa3oKqCaH5iXU9BSAKne9r9/8LiQAAGAcAgYAABiHgAEAAMYhYAAAgHEIGAAAYBwCBgAAGIeAAQAAxiFgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBxCBgAAGAcAgYAABiHgAEAAMYhYAAAgHEIGAAAYBwCBgAAGIeAAQAAxiFgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBxCBgAAGAcAgYAABiHgAEAAMYhYAAAgHEIGAAAYBwCBgAAGIeAAQAAxiFgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBxCBgAAGCcujU9ASCYNZuSXtNTAACUg3dgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBx+BQSABjChE/FHZqXUNNTwA2Cd2AAAIBxCBgAAGAcAgYAABiHgAEAAMYhYAAAgHEIGAAAYBwCBgAAGIeAAQAAxiFgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBxCBgAAGAcAgYAABgn4IDZtGmTBg0apOjoaIWEhGjVqlV+xy3L0owZMxQVFaUGDRooLi5O3377rd+YkydPavjw4XI4HAoPD9fo0aN15swZvzE7d+5U7969Vb9+fcXExCg1NTXwZwcAAGqlgAPm7Nmz6tKlixYsWFDu8dTUVL311ltatGiRtm3bpptuuknx8fE6f/68b8zw4cOVl5enzMxMrV69Wps2bdLYsWN9x71er/r166emTZsqJydHr7zyimbNmqV33323Ak8RAADUNiGWZVkVPjkkRCtXrtTgwYMl/e/dl+joaD3//PN64YUXJEnFxcWKjIxUWlqahg4dqr1796p9+/b6+uuv1b17d0lSRkaGBg4cqCNHjig6OloLFy7UtGnT5PF4ZLPZJElTpkzRqlWrtG/fvuuam9frldPpVHFxsRwOR0WfIm5wzaak1/QUAKMcmpdQ01OA4a739btSr4EpKCiQx+NRXFycb5/T6VRsbKyys7MlSdnZ2QoPD/fFiyTFxcWpTp062rZtm29Mnz59fPEiSfHx8crPz9cPP/xQ7mOXlJTI6/X6bQAAoHaq1IDxeDySpMjISL/9kZGRvmMej0cRERF+x+vWravGjRv7jSnvPn76GD+XkpIip9Pp22JiYn79EwIAAEGp1nwKaerUqSouLvZthw8frukpAQCAKlKpAeNyuSRJRUVFfvuLiop8x1wul44fP+53vLS0VCdPnvQbU959/PQxfs5ut8vhcPhtAACgdqrUgGnevLlcLpeysrJ8+7xer7Zt2ya32y1JcrvdOnXqlHJycnxj1q9fr7KyMsXGxvrGbNq0SRcvXvSNyczMVJs2bdSoUaPKnDIAADBQwAFz5swZ5ebmKjc3V9L/LtzNzc1VYWGhQkJCNH78eL388sv67LPPtGvXLo0cOVLR0dG+Tyq1a9dO/fv315gxY7R9+3Zt3rxZSUlJGjp0qKKjoyVJw4YNk81m0+jRo5WXl6dly5bpzTffVHJycqU9cQAAYK66gZ7wzTff6P777/fdvhwVo0aNUlpamiZNmqSzZ89q7NixOnXqlHr16qWMjAzVr1/fd87ixYuVlJSkvn37qk6dOhoyZIjeeust33Gn06m1a9cqMTFR3bp1U5MmTTRjxgy/74oBAAA3rl/1PTDBjO+BQWXge2CAwPA9MPi1auR7YAAAAKoDAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4lR4ws2bNUkhIiN/Wtm1b3/Hz588rMTFRt9xyi26++WYNGTJERUVFfvdRWFiohIQENWzYUBEREZo4caJKS0sre6oAAMBQdaviTjt06KB169b9/4PU/f+HmTBhgtLT0/Xpp5/K6XQqKSlJjzzyiDZv3ixJunTpkhISEuRyubRlyxYdO3ZMI0eOVL169TR37tyqmC4AADBMlQRM3bp15XK5rthfXFysDz74QEuWLNEDDzwgSfroo4/Url07bd26VT169NDatWu1Z88erVu3TpGRkeratavmzJmjyZMna9asWbLZbFUxZQAAYJAquQbm22+/VXR0tFq0aKHhw4ersLBQkpSTk6OLFy8qLi7ON7Zt27a6/fbblZ2dLUnKzs5Wp06dFBkZ6RsTHx8vr9ervLy8qz5mSUmJvF6v3wYAAGqnSg+Y2NhYpaWlKSMjQwsXLlRBQYF69+6t06dPy+PxyGazKTw83O+cyMhIeTweSZLH4/GLl8vHLx+7mpSUFDmdTt8WExNTuU8MAAAEjUr/EdKAAQN8f+7cubNiY2PVtGlTLV++XA0aNKjsh/OZOnWqkpOTfbe9Xi8RAwBALVXlH6MODw9X69attX//frlcLl24cEGnTp3yG1NUVOS7Zsblcl3xqaTLt8u7ruYyu90uh8PhtwEAgNqpygPmzJkzOnDggKKiotStWzfVq1dPWVlZvuP5+fkqLCyU2+2WJLndbu3atUvHjx/3jcnMzJTD4VD79u2reroAAMAAlf4jpBdeeEGDBg1S06ZNdfToUc2cOVOhoaF6/PHH5XQ6NXr0aCUnJ6tx48ZyOBx67rnn5Ha71aNHD0lSv3791L59e40YMUKpqanyeDyaPn26EhMTZbfbK3u6AIBK1GxKek1P4ZoOzUuo6SmgElR6wBw5ckSPP/64vv/+e916663q1auXtm7dqltvvVWS9MYbb6hOnToaMmSISkpKFB8fr3feecd3fmhoqFavXq1nnnlGbrdbN910k0aNGqXZs2dX9lQBAIChQizLsmp6ElXB6/XK6XSquLiY62FQYSb8axJAYHgHJrhd7+s3vwsJAAAYh4ABAADGIWAAAIBxquR3IQHXg+tLAAAVxTswAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjEDAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDh1a3oCqBrNpqTX9BQAAKgyBAwA4IZiwj/wDs1LqOkpBD1+hAQAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwTlAHzIIFC9SsWTPVr19fsbGx2r59e01PCQAABIGg/SbeZcuWKTk5WYsWLVJsbKzmz5+v+Ph45efnKyIioqanBwBAleHbgq8taN+Bef311zVmzBg99dRTat++vRYtWqSGDRvqww8/rOmpAQCAGhaU78BcuHBBOTk5mjp1qm9fnTp1FBcXp+zs7HLPKSkpUUlJie92cXGxJMnr9Vb6/DrO/KLS7xMAAJNUxevrT+/XsqxfHBeUAfPdd9/p0qVLioyM9NsfGRmpffv2lXtOSkqKXnrppSv2x8TEVMkcAQC4kTnnV+39nz59Wk6n86rHgzJgKmLq1KlKTk723S4rK9PJkyd1yy23KCQkpNIex+v1KiYmRocPH5bD4ai0+73RsI6Vg3WsHKxj5WAdK8eNvo6WZen06dOKjo7+xXFBGTBNmjRRaGioioqK/PYXFRXJ5XKVe47dbpfdbvfbFx4eXlVTlMPhuCH/YlU21rFysI6Vg3WsHKxj5biR1/GX3nm5LCgv4rXZbOrWrZuysrJ8+8rKypSVlSW3212DMwMAAMEgKN+BkaTk5GSNGjVK3bt3191336358+fr7Nmzeuqpp2p6agAAoIYFbcA89thjOnHihGbMmCGPx6OuXbsqIyPjigt7q5vdbtfMmTOv+HEVAsM6Vg7WsXKwjpWDdawcrOP1CbGu9TklAACAIBOU18AAAAD8EgIGAAAYh4ABAADGIWAAAIBxCJhyLFiwQM2aNVP9+vUVGxur7du3/+L4Tz/9VG3btlX9+vXVqVMnrVmzpppmGtwCWcf33ntPvXv3VqNGjdSoUSPFxcVdc91vFIH+fbxs6dKlCgkJ0eDBg6t2goYIdB1PnTqlxMRERUVFyW63q3Xr1vy3rcDXcf78+WrTpo0aNGigmJgYTZgwQefPn6+m2QanTZs2adCgQYqOjlZISIhWrVp1zXM2bNigO++8U3a7Xa1atVJaWlqVzzPoWfCzdOlSy2azWR9++KGVl5dnjRkzxgoPD7eKiorKHb9582YrNDTUSk1Ntfbs2WNNnz7dqlevnrVr165qnnlwCXQdhw0bZi1YsMDasWOHtXfvXuvJJ5+0nE6ndeTIkWqeeXAJdB0vKygosH7zm99YvXv3th5++OHqmWwQC3QdS0pKrO7du1sDBw60vvrqK6ugoMDasGGDlZubW80zDy6BruPixYstu91uLV682CooKLC++OILKyoqypowYUI1zzy4rFmzxpo2bZq1YsUKS5K1cuXKXxx/8OBBq2HDhlZycrK1Z88e6+2337ZCQ0OtjIyM6plwkCJgfubuu++2EhMTfbcvXbpkRUdHWykpKeWOf/TRR62EhAS/fbGxsdbvf//7Kp1nsAt0HX+utLTUCgsLsz7++OOqmqIRKrKOpaWl1j333GO9//771qhRowgYK/B1XLhwodWiRQvrwoUL1TVFIwS6jomJidYDDzzgty85Odnq2bNnlc7TJNcTMJMmTbI6dOjgt++xxx6z4uPjq3BmwY8fIf3EhQsXlJOTo7i4ON++OnXqKC4uTtnZ2eWek52d7TdekuLj4686/kZQkXX8uR9//FEXL15U48aNq2qaQa+i6zh79mxFRERo9OjR1THNoFeRdfzss8/kdruVmJioyMhIdezYUXPnztWlS5eqa9pBpyLreM899ygnJ8f3Y6aDBw9qzZo1GjhwYLXMubbgdaZ8QftNvDXhu+++06VLl674tt/IyEjt27ev3HM8Hk+54z0eT5XNM9hVZB1/bvLkyYqOjr7iP9obSUXW8auvvtIHH3yg3NzcapihGSqyjgcPHtT69es1fPhwrVmzRvv379ezzz6rixcvaubMmdUx7aBTkXUcNmyYvvvuO/Xq1UuWZam0tFTjxo3Tiy++WB1TrjWu9jrj9Xp17tw5NWjQoIZmVrN4BwZBZ968eVq6dKlWrlyp+vXr1/R0jHH69GmNGDFC7733npo0aVLT0zFaWVmZIiIi9O6776pbt2567LHHNG3aNC1atKimp2aUDRs2aO7cuXrnnXf0r3/9SytWrFB6errmzJlT01NDLcA7MD/RpEkThYaGqqioyG9/UVGRXC5Xuee4XK6Axt8IKrKOl7366quaN2+e1q1bp86dO1flNINeoOt44MABHTp0SIMGDfLtKysrkyTVrVtX+fn5atmyZdVOOghV5O9jVFSU6tWrp9DQUN++du3ayePx6MKFC7LZbFU652BUkXX8wx/+oBEjRujpp5+WJHXq1Elnz57V2LFjNW3aNNWpw7+hr8fVXmccDscN++6LxDswfmw2m7p166asrCzfvrKyMmVlZcntdpd7jtvt9hsvSZmZmVcdfyOoyDpKUmpqqubMmaOMjAx17969OqYa1AJdx7Zt22rXrl3Kzc31bQ899JDuv/9+5ebmKiYmpjqnHzQq8vexZ8+e2r9/vy8AJek///mPoqKibsh4kSq2jj/++OMVkXI5Ci1+Dd9143XmKmr6KuJgs3TpUstut1tpaWnWnj17rLFjx1rh4eGWx+OxLMuyRowYYU2ZMsU3fvPmzVbdunWtV1991dq7d681c+ZMPkZtBb6O8+bNs2w2m/W3v/3NOnbsmG87ffp0TT2FoBDoOv4cn0L6n0DXsbCw0AoLC7OSkpKs/Px8a/Xq1VZERIT18ssv19RTCAqBruPMmTOtsLAw65NPPrEOHjxorV271mrZsqX16KOP1tRTCAqnT5+2duzYYe3YscOSZL3++uvWjh07rP/+97+WZVnWlClTrBEjRvjGX/4Y9cSJE629e/daCxYs4GPUFh+jLtfbb79t3X777ZbNZrPuvvtua+vWrb5j9957rzVq1Ci/8cuXL7dat25t2Ww2q0OHDlZ6eno1zzg4BbKOTZs2tSRdsc2cObP6Jx5kAv37+FMEzP8LdB23bNlixcbGWna73WrRooX1xz/+0SotLa3mWQefQNbx4sWL1qxZs6yWLVta9evXt2JiYqxnn33W+uGHH6p/4kHkyy+/LPf/d5fXbtSoUda99957xTldu3a1bDab1aJFC+ujjz6q9nkHmxDL4n08AABgFq6BAQAAxiFgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBxCBgAAGAcAgYAABiHgAEAAMYhYAAAgHEIGAAAYBwCBgAAGOf/AEhnBP0HSS03AAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xwx5JA688Gqu"
},
"source": [
"## Monty Hall Problem\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UCeUiE8j8Ngm"
},
"source": [
"You are a guest on a game show, and you have the choice of picking 1 of 3 doors: Behind one door is a car; behind each of the other two doors is a goat. You pick a door, let’s say door 1, and the host, who doesn't know what’s behind the doors, opens another door, door 3, which has a goat. The host who picks their door knows what is behind the door, but you do not know what is behind your's. The host then asks you: \"Do you want to stick with your choice or choose another door? Is it in our favor to switch doors in the end?\" You have a chance to switch or stick with your door you chose. Will it work out for you in the end if you switch or stick with your original choice and what is the probability?"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "r6YK_kNx4ZSI"
},
"source": [
"We start by importing random so that we may randomize the doors and the contestants selection and importing matplotlib.pyplot as plt so that we can see our results in a graph. Then we create our three doors and create two lists that will store how many wins we got when sticking with our choice and how many wins we got if we were to switch doors."
]
},
{
"cell_type": "code",
"metadata": {
"id": "tUkRKSRg4ca4"
},
"source": [
"import random\n",
"import matplotlib.pyplot as plt\n",
"\n",
"#We are going with 3 doors :\n",
"#1 - Car\n",
"#2 - Goats\n",
"doors = [\"goat\",\"goat\",\"car\"]\n",
"\n",
"#Empty lists to store probability values :\n",
"switch_win_probability = []\n",
"stick_win_probability = []"
],
"execution_count": 53,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "qLd5EVdA4ezC"
},
"source": [
"Now we create our experiment. We define our function as monte_carlo. We start our experiment by shuffling the doors with random.shuffle, then we get a random selection from the contestant with random.randrange. If the contestant did not select the car, we add 1 to our switch wins. If the contestant did get the car, we add 1 to the stick wins. We add our result to the list and find our probability. We then plot our list and print the probability."
]
},
{
"cell_type": "code",
"metadata": {
"id": "807HZciY4hIg"
},
"source": [
"def monte_carlo(n):\n",
"\n",
" #Calculating switch and stick wins :\n",
" switch_wins = 0\n",
" stick_wins = 0\n",
"\n",
" for i in range(n):\n",
"\n",
" #Randomly placing the car and goats behind the three doors :\n",
" random.shuffle(doors)\n",
"\n",
" #Contestant's choice :\n",
" k = random.randrange(2)\n",
"\n",
" #If the contestant doesn't get car :\n",
" if doors[k] != 'car':\n",
" switch_wins += 1\n",
"\n",
" #If the contestant got car :\n",
" else:\n",
" stick_wins += 1\n",
"\n",
" #Updating the list values :\n",
" switch_win_probability.append(switch_wins/(i+1))\n",
" stick_win_probability.append(stick_wins/(i+1))\n",
"\n",
" #Plotting the data :\n",
" plt.plot(switch_win_probability)\n",
" plt.plot(stick_win_probability)\n",
"\n",
" #plotting the expected value\n",
" plt.axhline(y=0.66666, color='r', linestyle='-')\n",
" plt.axhline(y=0.33333, color='g', linestyle='-')\n",
"\n",
" #plotting the expected value\n",
" plt.axhline(y=0.66666, color='r', linestyle='-')\n",
" plt.axhline(y=0.33333, color='g', linestyle='-')\n",
"\n",
" #Print the probability values :\n",
" print('Winning probability if you always switch:',switch_win_probability[-1])\n",
" print('Winning probability if you always stick to your original choice:', stick_win_probability[-1])"
],
"execution_count": 54,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "elZimIJp4mTg"
},
"source": [
"To finish, we call our function with the number of times we would like to run the experiment."
]
},
{
"cell_type": "code",
"metadata": {
"id": "N2uMS-WM4osi",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 466
},
"outputId": "8d7e9413-9256-4ece-9181-e89dc23e4e1c"
},
"source": [
"monte_carlo(1000)"
],
"execution_count": 55,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Winning probability if you always switch: 0.672\n",
"Winning probability if you always stick to your original choice: 0.328\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZkElEQVR4nO3dd3wUZeLH8c+W7KYXElKA0LtUQRB7QdHz7Hei5ylynopiQVQIKEURAlYsKNbzfndnvbPr4XHYTwRpIiK9hJZGetlsmfn9kWSTJQkhmGQp3/frlZe7M8/MPjvB3W+eNhbTNE1EREREgsQa7AqIiIjI8U1hRERERIJKYURERESCSmFEREREgkphRERERIJKYURERESCSmFEREREgkphRERERILKHuwKHArDMNi7dy9RUVFYLJZgV0dEREQOgWmaFBcX065dO6zWhts/joowsnfvXlJTU4NdDRERETkMu3btokOHDg3uPyrCSFRUFFD5ZqKjo4NcGxERETkURUVFpKam+r/HG3JUhJHqrpno6GiFERERkaNMY0MsNIBVREREgkphRERERIJKYURERESCSmFEREREgkphRERERIJKYURERESCSmFEREREgkphRERERIJKYURERESCqslh5Ouvv+biiy+mXbt2WCwW3n///UaP+fLLLznxxBNxOp10796d11577TCqKiIiIseiJoeR0tJSBg4cyIIFCw6p/Pbt27nooos4++yzWbNmDRMmTODPf/4zn332WZMrKyIiIseeJt+b5sILL+TCCy885PILFy6kS5cuPP744wD06dOHb7/9lieffJJRo0Y19eWbjcfjISsny/88IiyckLBIIpwhja6hLyIiIs2nxW+Ut3TpUkaOHBmwbdSoUUyYMKHBYyoqKqioqPA/LyoqavZ6ZeVksezDOYQ7SwHwGXZ+zErk7ntnEe44Ku4fKCIickxo8W/dzMxMkpKSArYlJSVRVFREeXk5YWFhdY5JT0/nwQcfbOmqEd92M764bf7nAzmzxV9TREREAh2Rs2mmTJlCYWGh/2fXrl3N/hpJbZPIzu5F+fazsOV3A8Bu8xIWYmv21xIREZGGtXjLSHJyMllZWQHbsrKyiI6OrrdVBMDpdOJ0Olu0XiEhIVx167MAfPTyTYTHbcViMTReREREpJW1eMvIiBEjWLJkScC2xYsXM2LEiJZ+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AO6qu/eKiIhIy1AYqVJ7zEhto1Z/0co1EREROb4ojFQxGwgjn704s3UrIiIicpxRGKlSXxhxetxkbigMQm1ERESOHwojVcyqFVidngr/NpuhBc9ERERamsJIleqWkeiyUv82q2EEqzoiIiLHDYWRKkbV2igxpTV3CLYpjIiIiLQ4hRFgxll9/Y/jSgv8j9VNIyIi0vIURgCjXQ//4zYl+f7HahkRERFpeQojQERYzWWIK60JI1a1jIiIiLQ4hRHAEV6z4mpsuVpGREREWpPCCOC2hPofh5bk+R977E2+j6CIiIg0kcII4Ki14Jkru9j/uDQ0PBjVEREROa4ojACm3eZ/vHDNV/7HZVV38RUREZGWozACeKgZG6Ll30VERFqXwghgWCtbRixmZShJycsGwOFxB61OIiIixwuFEcBaNYPXYlb+d/T/3uaEjI3c8NXrwauUiIjIcULTRQAslZnMYlamkbQnXiYNgNFBq5KIiMjxQi0jgFk1ftWCGdyKiIiIHIcURgDDUj1mRGFERESktSmMAGbVYBFLI+VERESk+SmMAKahlhEREZFgURgBzKqroDAiIiLS+hRGANMaOJtGREREWo/CCGBWjRbRbBoREZHWpzACddYZERERkdajMAL+O9MojIiIiLQ+hRHAqLoMmtorIiLS+hRGANNSNWZELSMiIiKtTmEEzaYREREJJoURAItm04iIiASLwghgmuqmERERCRaFEcBnVRgREREJFoURwERjRkRERIJFYQQwqub0asyIiIhI61MYAVA3jYiISNAojFBr0TOFERERkVanMEKtG+UpjIiIiLQ6hRHArLpRnlVhREREpNUpjACGFj0TEREJGoUR8N8hT900IiIirU9hBPBpAKuIiEjQKIwAWBRGREREgkVhBDDVTSMiIhI0CiOAUT2bRgNYRUREWp3CCGBatM6IiIhIsCiMUNMyYjGNINdERETk+KMwAv7OGbWMiIiItD6FEWpWYFUYERERaX0KI9SswKrl4EVERFqfwgg1A1jRbBoREZFWpzBCrRvlGQojIiIirU1hBDDRjfJERESCRWGE2mNGNLVXRESktSmMAKZVs2lERESCRWGEWt00CiMiIiKt7rDCyIIFC+jcuTOhoaEMHz6c5cuXH7T8O++8Q+/evQkNDaV///58+umnh1XZlmJoOXgREZGgaXIYeeutt5g4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Mzt27Gh+/vnn5ooVK8wRI0aYI0aM8O+vnnJ6/vnnm2vWrDEXLVpktm3bVlNOG1F7No1p6jo3l+XLl5t2u92cPXu2uXnzZvMf//iHGR4ebv7973/3l5k7d64ZGxtrfvDBB+batWvNSy+9tN6pkYMHDzaXLVtmfvvtt2aPHj2O+ymntY0ZM8Zs3769f2rvu+++ayYkJJiTJk3yl9F1PjzFxcXm6tWrzdWrV5uA+cQTT5irV682d+7caZpm81zXgoICMykpybzuuuvMdevWmW+++aYZHh6uqb2/xjPPPGN27NjRdDgc5rBhw8zvv/8+2FU6agD1/vzlL3/xlykvLzdvu+02My4uzgwPDzcvv/xyc9++fQHn2bFjh3nhhReaYWFhZkJCgnnPPfeYHo+nld/N0eXAMKLr3Hw++ugjs1+/fqbT6TR79+5tvvjiiwH7DcMwp02bZiYlJZlOp9M899xzzY0bNwaU2b9/v3nNNdeYkZGRZnR0tDl27FizuLi4Nd/GEa2oqMi86667zI4dO5qhoaFm165dzfvvvz9gqqiu8+H54osv6v1cHjNmjGmazXddf/zxR/O0004znU6n2b59e3Pu3Lm/uu4W06y17J2IiIhIKzsux4yIiIjIkUNhRERERIJKYURERESCSmFEREREgkphRERERIJKYURERESCSmFEREREgkphRERERIJKYURERESCSmFEREREgkphRERERIJKYURERESC6v8B9ZsboEc3E14AAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "XCt_r3s62LwN"
},
"source": [
"As you can see, we also have a graph showing the probability throughout our experiments. The graph list the expected value of .66 for switching and .33 for sticking. The probability is far more random at the start of our experiments and approaches the expected value after more experiments are ran. This is because of the **law of large numbers** which states that the more trials we run, the closer we are to reaching our expected value. In the this Monty Hall game show example, the chances of switching doors with the host will work out more in favor for you other than staying with the original door you chose."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rR_gVEvbE4mQ"
},
"source": [
" ## Craps Simulator for One Shooter\n",
" "
]
},
{
"cell_type": "markdown",
"source": [
"Because the Monte Carlo Simulation is connected with gambling and many card games. In this example we wanted to look at the game of Craps. Basically, you roll a pair dice and you win if you roll a 7 or 11. If you roll a 2, 3 or 12, you \"crap out\". It is opposite if you end up betting a certain amount of money and whether or not you \"Pass Line or Don't Pass Line\". Pass line is when you bet the shooter (person who is rolling the dice) will win by rolling a natural, which is a 7 or 11. The Don't Pass Line is when you bet the shooter they will lose if they end up rolling a 2,3,12, or 7. In this example, we want to look at the chances of you rolling a **Crap** or **SevenOut**."
],
"metadata": {
"id": "eOzQMhmLBX3X"
}
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dBQ6Y5PvFXig",
"outputId": "0610de29-6a3d-4dbf-a144-921c4839a2b3"
},
"source": [
"import random\n",
"\n",
"random.randint(1,6)"
],
"execution_count": 56,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"6"
]
},
"metadata": {},
"execution_count": 56
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "c8xh4uchFbzQ"
},
"source": [
"Above code rolls a dice once."
]
},
{
"cell_type": "code",
"metadata": {
"id": "W57_WqfRFeuw"
},
"source": [
"def Roll2Dice():\n",
" return [random.randint(1,6),random.randint(1,6)]"
],
"execution_count": 57,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YnwzE-ICFkzQ",
"outputId": "49404d81-fe4d-4180-d208-cb67e7b13593"
},
"source": [
"Roll2Dice()"
],
"execution_count": 58,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[3, 6]"
]
},
"metadata": {},
"execution_count": 58
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ax0wscLLFoIo"
},
"source": [
"This rolls two dies. I'll do this a bunch of times now."
]
},
{
"cell_type": "code",
"source": [
"listy = []\n",
"\n",
"for i in range(1000):\n",
" listy.append(sum(Roll2Dice()))"
],
"metadata": {
"id": "fRQ63ukKYktY"
},
"execution_count": 59,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "NapYYFqeFwnR",
"outputId": "aca28ea2-c850-47e6-db84-ea84fef0af03"
},
"source": [
"sums = range(2,13,1)\n",
"newlist =[]\n",
"for i in sums:\n",
" newlist.append(0)\n",
"\n",
"for i in listy:\n",
" for j in sums:\n",
" if i == j:\n",
" newlist[i-2] +=1\n",
"\n",
"newlist"
],
"execution_count": 60,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[26, 59, 62, 107, 147, 162, 136, 133, 73, 67, 28]"
]
},
"metadata": {},
"execution_count": 60
}
]
},
{
"cell_type": "code",
"source": [
"newlist"
],
"metadata": {
"id": "_z6e7TVtZK6M",
"outputId": "a4872943-3c79-4579-9420-86ce1d5f9138",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 61,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[26, 59, 62, 107, 147, 162, 136, 133, 73, 67, 28]"
]
},
"metadata": {},
"execution_count": 61
}
]
},
{
"cell_type": "code",
"source": [
"plt.hist(sums,11, weights = newlist)"
],
"metadata": {
"id": "kxGGgeCMY5gH",
"outputId": "2813789d-6de2-46d6-9fee-a064d0ab51ec",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 519
}
},
"execution_count": 62,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([ 26., 59., 62., 107., 147., 162., 136., 133., 73., 67., 28.]),\n",
" array([ 2. , 2.90909091, 3.81818182, 4.72727273, 5.63636364,\n",
" 6.54545455, 7.45454545, 8.36363636, 9.27272727, 10.18181818,\n",
" 11.09090909, 12. ]),\n",
" )"
]
},
"metadata": {},
"execution_count": 62
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "T1awEimqF0WA"
},
"source": [
"Above I have checked that the outcomes are random but as expected. Both codes do the same thing."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2-TvCdjGF1RB",
"outputId": "11e9066e-c096-48e3-b290-f624c939a9aa"
},
"source": [
"def ComeOutRoll(TwoDice):\n",
" s = sum(TwoDice)\n",
" if (s == 2)|(s == 3)|(s==12):\n",
" return 'Craps'\n",
" elif (s == 7)|(s == 11):\n",
" return 'comeAgain'\n",
" else:\n",
" return s #return the point\n",
"\n",
"ComeOutRoll([4,4])"
],
"execution_count": 63,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"8"
]
},
"metadata": {},
"execution_count": 63
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "iF_z-qZ9F79Q",
"outputId": "e79e333e-71fb-45a6-a767-699c70c31085"
},
"source": [
"ComeOutRoll([6,6])"
],
"execution_count": 64,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Craps'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 64
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zCt0B3fXGASf"
},
"source": [
"The `ComeOutRoll` is the first roll in the craps game. There are three options **Craps** (2,3,12) **Natural** (7,11) (designated here as 'comeAgain' since you will get another come out roll. Any othe value will set the point, the function just returns that number."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "4PvAWEawGBAP",
"outputId": "dc75bbfe-409d-4d64-d407-929874f972bb"
},
"source": [
"def SetPointRoll(TwoDice,point):\n",
" s = sum(TwoDice)\n",
" if s == 7:\n",
" return 'SevenOut'\n",
" elif s == point:\n",
" return 'comeAgain'\n",
" else:\n",
" return point\n",
"\n",
"SetPointRoll([5,4],9)"
],
"execution_count": 65,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'comeAgain'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 65
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "CRgVCdmgGFYf",
"outputId": "c522522a-8331-42ad-e47a-0caec2f8b5dc"
},
"source": [
"SetPointRoll([3,4],4)"
],
"execution_count": 66,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'SevenOut'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 66
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dXSuZ8pwGGDX",
"outputId": "9b4eb7a8-dd2b-4487-c405-5b9a62806f25"
},
"source": [
"SetPointRoll([3,1],5)"
],
"execution_count": 67,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"5"
]
},
"metadata": {},
"execution_count": 67
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bnq2wYp3GJ53"
},
"source": [
"After the point has been set, you will roll over and over again until you **comeAgain** by hitting the same point or **SevenOut** by rolling a 7. The function returns the point if neither of those happen."
]
},
{
"cell_type": "code",
"metadata": {
"id": "TzkECcZZGK0X"
},
"source": [
"def PlayCraps():\n",
" x = ComeOutRoll(Roll2Dice())\n",
" rollCounter = 1\n",
" while (x != 'Craps')&(x != 'SevenOut'):\n",
" if x == 'comeAgain':\n",
" rollCounter += 1\n",
" x = ComeOutRoll(Roll2Dice())\n",
" else:\n",
" point = x\n",
" rollCounter += 1\n",
" x = SetPointRoll(Roll2Dice(),point)\n",
" return rollCounter\n"
],
"execution_count": 68,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8si6k5zkGOEA",
"outputId": "b9f035f4-2595-4459-fcd0-9d473c50beb7"
},
"source": [
"PlayCraps()"
],
"execution_count": 69,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 69
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BEbaqGYQGUnn"
},
"source": [
"`PlayCraps` will play the game returning the number of rolls until you **Crap** or **SevenOut**. Let's compute some statistics about it."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "eY0-j3CMGYQH",
"outputId": "a62c0f1d-d01e-4bea-bd2c-a7364fe5cf26"
},
"source": [
"list1 = []\n",
"for i in range(100):\n",
" list1.append(PlayCraps())\n",
"sum(list1)/len(list1)\n"
],
"execution_count": 70,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"7.38"
]
},
"metadata": {},
"execution_count": 70
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 484
},
"id": "RhS83BznGbVR",
"outputId": "a79bf15c-d3fd-4e86-849f-ee4729b37bcb"
},
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.hist(list1)"
],
"execution_count": 71,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([34., 29., 11., 6., 8., 4., 2., 2., 0., 4.]),\n",
" array([ 1. , 3.9, 6.8, 9.7, 12.6, 15.5, 18.4, 21.3, 24.2, 27.1, 30. ]),\n",
" )"
]
},
"metadata": {},
"execution_count": 71
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Uw0ItlctGfkv"
},
"source": [
"The distribution is not normal! Seems like it is mostly just a few rolls. I wonder what the expected or average value is."
]
},
{
"cell_type": "code",
"metadata": {
"id": "PjbKzoxgGj4g"
},
"source": [
"list2 = []\n",
"for j in range(200):\n",
" list1 = []\n",
" for i in range(100):\n",
" list1.append(PlayCraps())\n",
" list2.append(sum(list1)/len(list1))"
],
"execution_count": 72,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 484
},
"id": "XtPn6iQUGknH",
"outputId": "84da5590-b045-49fb-b079-0229b879d0d0"
},
"source": [
"plt.hist(list2)"
],
"execution_count": 73,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([ 2., 14., 43., 50., 40., 36., 9., 4., 1., 1.]),\n",
" array([5.22, 5.6 , 5.98, 6.36, 6.74, 7.12, 7.5 , 7.88, 8.26, 8.64, 9.02]),\n",
" )"
]
},
"metadata": {},
"execution_count": 73
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ONQmuNQtGnqg",
"outputId": "d27f556e-6a78-4809-84ec-41a7c4cb2bd1"
},
"source": [
"from numpy import mean\n",
"\n",
"mean(list2)"
],
"execution_count": 74,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"6.72145"
]
},
"metadata": {},
"execution_count": 74
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ru3ABIx4GqPQ"
},
"source": [
"As I perused the internet for this value, I found lots of answers that were larger! How can that be! At first I thought I had the program wrong. Below I write some code to check the craps game by hand."
]
},
{
"cell_type": "code",
"metadata": {
"id": "jNKuSiWFGrHx"
},
"source": [
"def ErrorTestingPlayCraps():\n",
" listOfRolls = []\n",
" randRoll = Roll2Dice()\n",
" listOfRolls.append(randRoll)\n",
" x = ComeOutRoll(randRoll)\n",
" rollCounter = 1\n",
" PassLineWins = 0\n",
" while (x != 'Craps')&(x != 'SevenOut'):\n",
" if x == 'comeAgain':\n",
" listOfRolls.append('Pass Line Win')\n",
" PassLineWins += 1\n",
" rollCounter += 1\n",
" randRoll = Roll2Dice()\n",
" listOfRolls.append(randRoll)\n",
" x = ComeOutRoll(randRoll)\n",
" else:\n",
" point = x\n",
" rollCounter += 1\n",
" randRoll = Roll2Dice()\n",
" listOfRolls.append(randRoll)\n",
" listOfRolls.append(point)\n",
" x = SetPointRoll(randRoll,point)\n",
" else:\n",
" listOfRolls.append(x)\n",
" return rollCounter, listOfRolls"
],
"execution_count": 75,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "y4uIm3BwGv3I",
"outputId": "bbe697e5-07ae-40b7-f392-ad3c033626af"
},
"source": [
"ErrorTestingPlayCraps()"
],
"execution_count": 76,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(7,\n",
" [[6, 2],\n",
" [4, 5],\n",
" 8,\n",
" [2, 6],\n",
" 8,\n",
" 'Pass Line Win',\n",
" [2, 3],\n",
" [1, 2],\n",
" 5,\n",
" [1, 5],\n",
" 5,\n",
" [4, 3],\n",
" 5,\n",
" 'SevenOut'])"
]
},
"metadata": {},
"execution_count": 76
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "UbFBcTmEGxxA",
"outputId": "8f39d774-81e8-4297-9edf-01ee85c2b78b"
},
"source": [
"ErrorTestingPlayCraps()"
],
"execution_count": 77,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(3, [[4, 4], [1, 5], 8, [4, 3], 8, 'SevenOut'])"
]
},
"metadata": {},
"execution_count": 77
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0yUG0KqeG07A"
},
"source": [
"This simulation is more fun as it really shows you what happens on each roll.\n",
"\n",
"\n",
"Trying this ***many*** times, I did not see an error. This makes me feel like the reference [here](https://wizardofodds.com/ask-the-wizard/craps/probability/) has an error in their computation. Let's see if we can find the value theoretically we have simulated!"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ju-O7VccG4M4"
},
"source": [
"Here is the theoretical expected value. Call the expected value $x$. Then on the **ComeOutRoll**, craps results in the end of the game, natural results in playing the game again plus the roll you made and setting the point will result in a small game.\n",
"\n",
"Each point will have a different expected value. The point at 4 or 10 will result in an expected value of 4 (point rolls end with 4 or 7 $p = \\frac{9}{36}$) The game continues the probability of $\\frac39$. All the rest are similar. This creates an expected value computation of\n",
"\n",
"$$\n",
"x\n",
"=\n",
"\\frac4{36}\n",
"+\n",
"\\frac8{36}(x+1)\n",
"+\n",
"2\\cdot \\frac3{36}\\left(4+1+\\frac39x\\right)\n",
"+\n",
"2\\cdot \\frac4{36}\\left(3.6+1+\\frac4{10}x\\right)\n",
"+\n",
"2\\cdot \\frac5{36}\\left(\\frac{36}{11}+1+\\frac5{11}x\\right)\n",
"$$"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "yN2eACdBG8Dg",
"outputId": "853d48b4-4f55-459f-9f88-c9b4638ccbe1"
},
"source": [
"import sympy\n",
"\n",
"x = sympy.Symbol('x')\n",
"sympy.solve(4/36+8/36*(x+1)+2*3/36*(5+3/9*x)+8/36*(4.6+4/10*x)+10/36*(36/11+1+5/11*x)-x,x)"
],
"execution_count": 78,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[6.65737051792830]"
]
},
"metadata": {},
"execution_count": 78
}
]
},
{
"cell_type": "markdown",
"source": [
"## Craps Revisited"
],
"metadata": {
"id": "_kRJyCzaXMcI"
}
},
{
"cell_type": "markdown",
"source": [
"After pinning over this for many weeks and months, I discovered my error! I have a problem in the way I established the game. The shooter is only required to pass the dice on a 'Seven Out'. If the player hits craps, they may continue to roll. You only pass the dice on a 'Seven Out'! Let's adjust the code to reflect this reality. First I present the analytic solution:"
],
"metadata": {
"id": "iAdtZqaFXSAU"
}
},
{
"cell_type": "code",
"source": [
"sympy.solve(4/36*(x+1)+8/36*(x+1)+2*3/36*(5+3/9*x)+8/36*(4.6+4/10*x)+10/36*(36/11+1+5/11*x)-x,x)"
],
"metadata": {
"id": "qCfBjU3_XxC7",
"outputId": "46ccbaae-3816-45bf-8cd5-745af7677966",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 79,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[8.52551020408164]"
]
},
"metadata": {},
"execution_count": 79
}
]
},
{
"cell_type": "markdown",
"source": [
"Next we will add the simulation."
],
"metadata": {
"id": "mhvuTfeZX_FK"
}
},
{
"cell_type": "code",
"source": [
"def PlayCraps():\n",
" x = ComeOutRoll(Roll2Dice())\n",
" rollCounter = 1\n",
" while (x != 'SevenOut'):#remove the exiting with craps\n",
" if (x == 'comeAgain')|(x == 'Craps'):#instead go back to the comout roll on craps\n",
" rollCounter += 1\n",
" x = ComeOutRoll(Roll2Dice())\n",
" else:\n",
" point = x\n",
" rollCounter += 1\n",
" x = SetPointRoll(Roll2Dice(),point)\n",
" return rollCounter"
],
"metadata": {
"id": "nFarPzeBaURg"
},
"execution_count": 80,
"outputs": []
},
{
"cell_type": "code",
"source": [
"list1 = []\n",
"for i in range(100):\n",
" list1.append(PlayCraps())\n",
"sum(list1)/len(list1)"
],
"metadata": {
"id": "5OPQfy6XaejD",
"outputId": "be39f3f0-341f-48b3-d5e1-94a51794e8f8",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 81,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"7.85"
]
},
"metadata": {},
"execution_count": 81
}
]
},
{
"cell_type": "markdown",
"source": [
"This seems close to the reported value although still random..."
],
"metadata": {
"id": "sHvUz4vbbROm"
}
},
{
"cell_type": "code",
"source": [
"list2 = []\n",
"for j in range(200):\n",
" list1 = []\n",
" for i in range(100):\n",
" list1.append(PlayCraps())\n",
" list2.append(sum(list1)/len(list1))\n",
"\n",
"plt.hist(list2)"
],
"metadata": {
"id": "Q73tKofUbVo1",
"outputId": "bde95467-bf71-4f66-e72e-b19b7a62d1d0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 501
}
},
"execution_count": 82,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([ 1., 18., 35., 49., 45., 33., 12., 4., 1., 2.]),\n",
" array([ 6.82 , 7.267, 7.714, 8.161, 8.608, 9.055, 9.502, 9.949,\n",
" 10.396, 10.843, 11.29 ]),\n",
" )"
]
},
"metadata": {},
"execution_count": 82
},
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"mean(list2)"
],
"metadata": {
"id": "-eGa_ykTbe84",
"outputId": "8fa2cd74-5f35-4bb3-8f5c-081eb8f5decf",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 83,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"8.6062"
]
},
"metadata": {},
"execution_count": 83
}
]
},
{
"cell_type": "markdown",
"source": [
"That was the issue! Now that we understand the game a bit better, time to hit the tables!"
],
"metadata": {
"id": "FQY2Kd0-bnQ5"
}
},
{
"cell_type": "markdown",
"metadata": {
"id": "fb2uZl1q_LR_"
},
"source": [
"## References\n",
"\n",
"\n",
"**Shukla, P., & Iriondo, R**. (2021, April 2). *Monte Carlo Simulation an In-depth Tutorial with Python*. Medium. Retrieved September 23, 2021, from https://pub.towardsai.net/monte-carlo-simulation-an-in-depth-tutorial-with-python-bcf6eb7856c8#c5ea.\n",
"\n",
"**Brownlee, J**. (2019, September 24). *A Gentle Introduction to Monte Carlo Sampling for Probability*. Machine Learning Mastery. Retrieved September 23, 2021, from https://machinelearningmastery.com/monte-carlo-sampling-for-probability/. \n",
"\n",
"https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/lecture-slides-and-files/MIT6_0002F16_lec6.pdf\n",
"\n",
"**Hanbury, P**. (2019, January 26). *Monte Carlo Simulations with Python (part 1)*. Medium. Retrieved September 23, 2021, from https://towardsdatascience.com/monte-carlo-simulations-with-python-part-1-f5627b7d60b0.\n",
"\n",
"**Klusaite, L**. (2019, September 19). Craps for Dummies: How to Play Craps Online. PokerNews. Retrieved December 9, 2021, from https://www.pokernews.com/casino/craps-dummies-guide.htm.\n",
"\n",
"**Moffitt, C**. (2019, February 18). *Monte Carlo Simulation with Python*. Practical Business Python Atom. Retrieved September 23, 2021, from https://pbpython.com/monte-carlo.html.\n",
"\n",
"https://www.youtube.com/watch?v=BfS2H1y6tzQ\n",
"\n",
"**Ferreira, B**. (2015, May 8). How Solitaire Inspired the World's Most Useful Simulation tool. VICE. Retrieved October 26, 2021, from https://www.vice.com/en/article/z4m75a/how-solitaire-inspired-the-worlds-most-useful-simulation-tool.\n",
"\n",
"Encyclopædia Britannica, inc. (n.d.). Stanislaw Ulam. Encyclopædia Britannica. Retrieved October 26, 2021, from https://www.britannica.com/biography/Stanislaw-Ulam.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DGC5WaH4Y98C"
},
"source": [
"## Problems"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aFM8E4VSZA_p"
},
"source": [
"**Definitions:**\n",
"\n",
"1. How would you describe the process of the Monte Carlo Simulation?\n",
"\n",
"2. What is the Law of large numbers?\n",
"\n",
"3. How would you explain the premise of the Monty Hall Problem to someone?\n",
"\n",
"**Questions:**\n",
"\n",
"1. Would choosing to swap doors on the Monty Hall Problem continue to prove advantageous if there are more than three doors? Why or why not?\n",
"\n",
"2. Example one shows that the number of coin flips in the experiment was increased from ten to ten thousand. For what reason would this change be beneficial to someone wanting to document the results?\n",
"\n",
"3. What other applications might Monte Carlo have? List three examples.\n",
"\n",
"4. For what reason was the Monte Carlo Simulation given its name?\n",
"\n",
"5. What game did Stanislaw Ulam play while recovering from a viral encephalitus? How did that game become an important factor of the creation of the Monte Carlo Method?\n",
"\n",
"6. In example one, would running only 100 experiments give an accurate answer? Why or why not?\n",
"\n",
"7. Suppose that the dice in the Craps example was loaded so that the number six would come up half of the time while the rest of the numbers remain unchanged. What effect would this have on how the game of Craps is played? (Consider modifying example three's code to visualize this change)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pz5xCYtbZCGZ"
},
"source": [
"## Project Idea: Black Jack"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Z7ZPjuH-VlaH"
},
"source": [],
"execution_count": 83,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "Jy4JESiXjqlg"
},
"source": [
"Black Jack is another gambling game that the Monte Carlo Simulation can calculate. The rules of the game can be find [here](https://bicyclecards.com/how-to-play/blackjack/) for more information. Can you create a code that calcuates the likelihood of a bust? If you can, create the chances that you will beat the dealer and compare the two outputs."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "C8i0wsUKijeP"
},
"source": [
"### Authors"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rajid0PdipzE"
},
"source": [
"\n",
"\n",
"Contributions were made by:\n",
"\n",
"Darcie Kaiser\n",
"\n",
"Tyler Evans\n",
"\n",
"Nicholas Jacob\n",
"\n",
"Jeremiah Fylstra"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7gUn1NirlAep"
},
"source": [],
"execution_count": 83,
"outputs": []
}
]
}