{ "cells": [ { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import random\n", "\n", "def sample(prob):\n", " if random.random() < prob:\n", " return True\n", " else:\n", " return False\n", " \n", "random.seed(123) # set the initial value of the pseudorandom number generator" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def simulate_one_game():\n", " points_for_you = 0\n", " points_for_opponent = 0\n", " current_server = 'you'\n", "\n", " while points_for_you < 21 and points_for_opponent < 21:\n", " if current_server == 'you': probability_of_winning = 0.6\n", " else: probability_of_winning = 0.5\n", "\n", " win = sample(probability_of_winning) # did the server win?\n", "\n", " if win:\n", " if current_server == 'you': points_for_you += 1\n", " elif current_server == 'opponent': points_for_opponent += 1\n", "\n", " status = 'lost'\n", " if win: status = 'won'\n", " #print('%s served and %s; you=%d, opponent=%d' % (current_server, status, points_for_you, points_for_opponent ) )\n", "\n", " if not win:\n", " if current_server == 'you': current_server = 'opponent'\n", " else: current_server = 'you'\n", " \n", " if points_for_you > points_for_opponent:\n", " return True # return True if you win\n", " else:\n", " return False # return False if you lose" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8248\n" ] } ], "source": [ "times_won = 0\n", "total = 0\n", "\n", "for i in range(10000):\n", " won = simulate_one_game()\n", " if won: times_won += 1\n", " total += 1\n", " \n", "print(times_won / total)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.5.1" } }, "nbformat": 4, "nbformat_minor": 2 }