{ "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": [ "