{ "metadata": { "name": "", "signature": "sha256:b9da820f9f90af53e421f1a937773588688e260d8d7293bf545da361649bbfaf" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import random\n", "import seaborn as sns\n", "sns.set(context=\"poster\", style=\"dark\")\n", "import mpld3\n", "\n", "def monty_hall():\n", " doors = list(range(3))\n", "\n", " car = randint(0,2)\n", " old_choice = randint(0,2)\n", "\n", " # reveal a door that is neither the car nor the choice and remove it from doors\n", "\n", " for i in range(3):\n", " if i != car and i != old_choice:\n", " reveal = i\n", "\n", " [ doors.remove(i) for i in [reveal, old_choice] ]\n", " \n", " bayes_choice = doors[0] # can change to randomly selecting a member of the list for len(doors)>3\n", " \n", " return car, old_choice, bayes_choice\n", "\n", "def mass_monty(num_trials):\n", " stubborn_wins = 0\n", " bayes_wins = 0\n", " stubborn_rate = zeros(num_trials)\n", " bayes_rate = zeros(num_trials)\n", "\n", " for i in range(num_trials):\n", " car, old_choice, bayes_choice = monty_hall()\n", " \n", " if old_choice == car:\n", " stubborn_wins += 1\n", " else:\n", " bayes_wins += 1\n", " \n", " stubborn_rate[i] = stubborn_wins / (i+1)\n", "# print(\"\\n\", i+1, \" st \", stubborn_wins, \" \", stubborn_rate[i])\n", "\n", " bayes_rate[i] = bayes_wins / (i+1)\n", "# print(i+1, \" bayes \", bayes_wins, \" \", bayes_rate[i])\n", " \n", " return stubborn_rate, bayes_rate\n", "\n", "stubborn_rate, bayes_rate = mass_monty(100)\n", "\n", "plot(stubborn_rate, '-', label=\"stubborn choice\")\n", "plot(bayes_rate, '-r', label=\"bayes choice\")\n", "legend(loc=\"best\")\n", "xlabel(\"trial\")\n", "ylabel(\"success rate\")\n", "mpld3.display()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", "\n", "
\n", "" ], "metadata": {}, "output_type": "pyout", "prompt_number": 260, "text": [ "" ] } ], "prompt_number": 260 }, { "cell_type": "code", "collapsed": false, "input": [ "stubborn_rate, bayes_rate = mass_monty(1000)\n", "\n", "plot(stubborn_rate, '-', label=\"stubborn choice\")\n", "plot(bayes_rate, '-r', label=\"bayes choice\")\n", "legend(loc=\"best\")\n", "print(\"final stubborn rate: {s}; final bayes rate: {b}\".format(s=stubborn_rate[-1], b=bayes_rate[-1]))\n", "xlabel(\"trial\")\n", "ylabel(\"success rate\")\n", "mpld3.display()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "final stubborn rate: 0.339; final bayes rate: 0.661\n" ] }, { "html": [ "\n", "\n", "\n", "\n", "
\n", "" ], "metadata": {}, "output_type": "pyout", "prompt_number": 256, "text": [ "" ] } ], "prompt_number": 256 } ], "metadata": {} } ] }