{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# L3 E - S5 2017-18 -- TD ordinateurs -- séance 6 -- solutions \n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  Probabilités  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On note la nouvelle manière d'importer les bibliothèques :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from matplotlib.pyplot import *\n",
    "from random import *\n",
    "import numpy as np\n",
    "import pylab as pl"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Exercice 1 : lancers de dés\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On lance un dé à 6 faces 3 fois d'affilée et on note la somme des nombres obtenus. \n",
    "Ecrire un programme qui trace l'histogramme ds différentes sommes possibles\n",
    "pour un nombre N de séries de 3 lancers donné à l'avance.\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n6JcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10d551208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lancers=[randint(1,6)+randint(1,6)+randint(1,6) for k in range(1000)]\n",
    "\n",
    "pl.hist(lancers,range = (2.5, 18.5), bins = 16,facecolor='y',rwidth = 0.8) \n",
    "pl.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercice 2 : tirages dans une urne"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Trois urnes $U_1$, $U_2$ et $U_3$ contiennent des boules rouges et noires. L'urne $U_1$ (resp. $U_2$, resp. $U_3$) contient 4 (resp.6, resp.3) boules rouges et 6 (resp.7, resp.9) boules noires.\n",
    "\n",
    "On tire une boule dans chaque urne.\n",
    " \n",
    " 1. A partir de simulations, estimer la probabilité $p_k$ d'obtenir $k$ boules rouges avec $k\\in \\{0,1,2,3\\}$.\n",
    "\n",
    " 2. Représenter le résultat à l'aide d'un camembert.\n",
    "\n",
    " 3. Comparer avec les valeurs données par la théorie."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from numpy.random import choice\n",
    "\n",
    "U1 = [\"Rouge\",\"Noir\"]\n",
    "proba1 = [0.4,0.6]\n",
    "U2 = [\"Rouge\",\"Noir\"]\n",
    "proba2 = [6/13,7/13]\n",
    "U3 = [\"Rouge\",\"Noir\"]\n",
    "proba3 = [0.25,0.75]\n",
    "\n",
    "NombreDeRouge=[]\n",
    "n=300\n",
    "for k in range (n):\n",
    "    Resultat=[]\n",
    "    Resultat.append(choice(U1, p=proba1))\n",
    "    Resultat.append(choice(U2, p=proba2))\n",
    "    Resultat.append(choice(U3, p=proba3))\n",
    "    NombreDeRouge.append(Resultat.count(\"Rouge\"))\n",
    "RES=[(NombreDeRouge.count(i)/float(3)) for i in range(4)]\n",
    "print(RES)\n",
    "\n",
    "name = ['0', '1', '2', '3']\n",
    "data = RES\n",
    "\n",
    "\n",
    "explode=(0, 0.15 , 0 , 0.2 )\n",
    "pl.pie(data, explode=explode, labels=name, autopct='%1.1f%%', startangle=-30)\n",
    "pl.axis('equal')\n",
    "title(\"nombre de Rouge pour %g tirages\"%n)\n",
    "savefig(\"nb-de-Rouges-pour-%g-tirages.pdf\"%n)\n",
    "\n",
    "\n",
    "pl.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.2423076923076923, 0.45, 0.26153846153846155, 0.046153846153846156]\n",
      "1.0\n"
     ]
    }
   ],
   "source": [
    "probas=[]\n",
    "probas.append((6*7*9)/(10*13*12))\n",
    "probas.append((4*7*9+6*6*9+3*6*7)/(10*13*12))\n",
    "probas.append((4*6*9+4*3*7+3*6*6)/(10*13*12))\n",
    "probas.append((4*6*3)/(10*13*12))\n",
    "print(probas)\n",
    "print(sum(probas))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercice 3 : la loi binomiale"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Définir une fonction ${\\rm \\texttt{LoiBinomiale(n,p)}}$\n",
    "qui simule la loi binomiale ${\\mathcal B}(n,p)$.    \n",
    "\n",
    "Représenter l'histogramme de cette simulation pour différentes valeurs de $n$ et $p$ (on rappelle que ${\\rm \\texttt{random()}}$ renvoie  un nombre pris au hasard entre 0 et 1).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n4S9JFfr/kbybFGfl9dQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109582b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 4, 24, 78, 118, 166, 225, 167, 113, 67, 21, 9, 4, 2, 1, 0, 0, 0, 0, 0]\n",
      "1000\n",
      "[0.0004, 0.0024, 0.0078, 0.0118, 0.0166, 0.0225, 0.0167, 0.0113, 0.0067, 0.0021, 0.0009, 0.0004, 0.0002, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    }
   ],
   "source": [
    "from matplotlib.pyplot import *\n",
    "from random import *\n",
    "import numpy as np\n",
    "import pylab as pl\n",
    "\n",
    "def loi_binomiale(n,p):\n",
    "    k=0\n",
    "    for i in range(n):\n",
    "        if random()<=p:\n",
    "            k=k+1\n",
    "    return k\n",
    "\n",
    "n=20\n",
    "p=0.3\n",
    "\n",
    "N=10000\n",
    "B=[loi_binomiale(n,p) for k in range(1000)]\n",
    "\n",
    "bornes=np.arange(0,n+1)-0.5\n",
    "pl.hist(B,bornes, rwidth=0.4)\n",
    "pl.title(\"histogramme pour la loi binomiale $\\mathcal{B}(%g,%g)$\"%(n,p))\n",
    "\n",
    "savefig(\"histogramme_loi_binomiale B(%g,%g).pdf\"%(n,p))\n",
    "\n",
    "pl.show()\n",
    "\n",
    "distribution=[B.count(i) for i in range(0,20)]\n",
    "print(distribution)\n",
    "total=sum([k for k in distribution])\n",
    "print(total)\n",
    "frequences=[(B.count(i)/float(N)) for i in range(1,20)]\n",
    "print(frequences)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercice 4 : le jeu de Saint Petersbourg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pierre et Paul joue au jeu suivant : Pierre lance une pi\\`ece jusqu'\\`a ce qu'il obtienne un \"Face\" (et le jeu s'arr\\^ete au premier \"Face\" obtenu).  Alors, si ce premier \"Face\" a \\'et\\'e au $n$-\\`eme lancer, Pierre donne $2^{n}$ euros \\`a Paul.\n",
    "\n",
    "\n",
    " 1. Simuler ce jeu répété un tr\\`es grand nombre de fois.\n",
    "\n",
    " 2. Combien Pierre donnera-t'il en moyenne à Paul selon cette simulation~?\n",
    "\n",
    " 3. Combien Pierre donnera-t'il en moyenne à  Paul selon la théorie~?\n",
    "\n",
    " 4. Combien Paul doit-il donner à Pierre pour que Pierre accepte de jouer à ce jeu~? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[8, 2, 4, 4, 4, 2, 4, 2, 2, 2, 8, 2, 8, 2, 8, 2, 2, 2, 4, 4, 2, 4, 16, 4, 2, 2, 4, 2, 4, 2, 8, 2, 2, 2, 2, 4, 2, 4, 2, 8, 2, 8, 2, 256, 4, 2, 32, 2, 8, 2, 2, 8, 2, 32, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 16, 16, 2, 4, 2, 2, 2, 4, 512, 2, 2, 8, 2, 16, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 16, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 4, 4, 32, 2, 2, 4, 4, 4, 128, 4, 16, 2, 4, 4, 2, 2, 2, 2, 4, 2, 16, 4, 4096, 2, 4, 8, 4, 2, 2, 8, 4, 4, 2, 2, 4, 2, 2, 2, 8, 4, 2, 2, 4, 2, 32, 32, 2, 8, 4, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 8, 2, 4, 4, 4, 4, 4, 2, 2, 2, 32, 2, 2, 2, 4, 2, 16, 2, 2, 2, 2, 4, 4, 2, 32, 2, 16, 2, 8, 2, 2, 2, 16, 2, 16, 16, 2, 2, 2, 2, 2, 8, 4, 4, 16, 2, 2, 32, 4, 2, 4, 2, 2, 4, 64, 2, 2, 2, 4, 2, 2, 2, 4, 16, 2, 2, 4, 32, 2, 2, 8, 32, 2, 128, 4, 4, 128, 2, 4, 16, 2, 2, 2, 2, 4, 32, 16, 2, 4, 2, 2, 4, 16, 4, 2, 2, 2, 2, 2, 2, 2, 16, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 32, 32, 2, 4, 8, 8, 2, 2, 2, 16, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 8, 2, 2, 2, 8, 4, 2, 2, 4, 8, 2, 2, 2, 2, 4, 2, 2, 2, 4, 8, 2, 2, 2, 256, 4, 4, 2, 4, 2, 2, 64, 2, 2, 16, 2, 2, 2, 4, 4, 2, 2, 8, 2, 8, 16, 2, 2, 8, 16, 8, 4, 2, 8, 2, 2, 2, 4, 8, 4, 2, 8, 4, 2, 2, 4, 2, 2, 4, 2, 2, 16, 4, 2, 2, 4, 2, 4, 2, 8, 2, 16, 4, 4, 4, 2, 2, 32, 4, 4, 4, 2, 4, 2, 8, 2, 4, 8, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 16, 2, 2, 8, 8, 2, 16, 4, 4, 8, 2, 8, 4, 8, 16, 2, 2, 8, 2, 2, 2, 2, 2, 16, 2, 2, 2, 8, 4, 4, 16, 2, 2, 4, 2, 4, 2, 4, 4, 4, 2, 2, 8, 4, 2, 2, 16, 2, 2, 32, 4, 2, 8, 2, 2, 2, 2, 32, 4, 4, 2, 2, 64, 16, 512, 8, 2, 16, 2, 16, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 4, 4, 8, 128, 2, 2, 2, 16, 4, 2, 4, 4, 4, 2, 16, 2, 2, 2, 2, 2, 4, 8, 8, 16, 16, 2, 8, 2, 2, 2, 32, 2, 4, 4, 2, 2, 2, 4, 2, 4, 2, 8, 2, 2, 4, 4, 8, 2, 2, 2, 4, 2, 8, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 8, 2, 8, 2, 2, 2, 8, 2, 4, 4, 2, 2, 4, 2, 8, 2, 2, 64, 2, 8, 4, 2, 16, 2, 2, 2, 16, 4, 2, 2, 4, 16, 4, 2, 4, 2, 8, 8, 2, 4, 2, 8, 16, 2, 4, 4, 2, 8, 2, 2, 32, 16, 4, 2, 8, 4, 2, 2, 8, 2, 4, 2, 16, 2, 4, 8, 2, 8, 4, 4, 16, 8, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 128, 2, 2, 32, 8, 2, 4, 4, 2, 8, 8, 8, 2, 2, 16, 2, 2, 2, 2, 8, 2, 2, 16, 4, 4, 2, 2, 8, 2, 4, 2, 8, 2, 2, 8, 4, 4, 2, 16, 16, 256, 2, 4, 2, 8, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 8, 2, 16, 2, 2, 2, 2, 4, 2, 8, 2, 16, 2, 2, 2, 8, 128, 8, 2, 2, 2, 4, 2, 2, 8, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 8, 64, 16, 16, 2, 2, 16, 2, 2, 8, 8, 2, 2, 8, 2, 2, 2, 2, 2, 4, 8, 4, 2, 4, 2, 2, 2, 8, 2, 2, 64, 2, 2, 2, 4, 2, 4, 2, 4, 4, 64, 2, 2, 4, 4, 2, 2, 8, 8, 4, 64, 2, 4, 2, 2, 2, 2, 2, 2, 1024, 8, 8, 8, 16, 256, 2, 8, 2, 4, 2, 4, 8, 2, 4, 4, 2, 2, 2, 2, 16, 16, 2, 2, 4, 8, 2, 4, 2, 2, 4, 2, 2, 32, 16, 2, 256, 4, 16, 16, 128, 2, 8, 4, 2, 4, 4, 32, 4, 4, 2, 4, 8, 4, 2, 2, 8, 2, 8, 4, 8, 2, 2, 2, 2, 4, 2, 16, 2, 4, 64, 2, 2, 2, 4, 16, 4, 2, 4, 2, 8, 2, 4, 64, 2, 2, 4, 2, 4, 2, 4, 4, 8, 2, 32, 2, 2, 2, 4, 32, 4, 2, 2, 4, 4, 4, 2, 4, 32, 2, 4, 2, 4, 2, 4, 8, 4, 2, 8, 2, 4, 2, 8, 8, 2, 2, 2, 4, 32, 256, 64, 128, 2, 2, 2, 2, 2, 4, 8, 128, 4, 2, 2, 4, 32, 2, 2, 64, 8, 4, 4, 2, 32, 16, 4, 16, 2, 2, 2, 2, 4, 4, 2, 2, 8, 2, 2, 4, 2, 8, 8, 2, 2, 4, 4, 4, 16, 2, 8, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 512, 32] \n",
      "\n",
      "16.66628\n",
      "17.02962\n",
      "17.3826\n",
      "38.62878\n",
      "16.59692\n",
      "16.42146\n",
      "17.48316\n",
      "18.66866\n",
      "26.04744\n",
      "111.74982\n",
      "17.68834\n",
      "14.39188\n",
      "17.61532\n",
      "29.16254\n",
      "13.50064\n",
      "15.3678\n",
      "15.27734\n",
      "19.4384\n",
      "30.32474\n",
      "22.92754\n",
      "16.95808\n",
      "15.74202\n",
      "20.10376\n",
      "15.6127\n",
      "15.31568\n",
      "20.46258\n",
      "17.01168\n",
      "22.61126\n",
      "20.34174\n",
      "16.6581\n",
      "16.86144\n",
      "15.86014\n",
      "26.46984\n",
      "16.80356\n",
      "25.8148\n",
      "18.2172\n",
      "18.97474\n",
      "16.93\n",
      "21.54718\n",
      "46.9887\n",
      "17.25642\n",
      "16.54298\n",
      "26.7436\n",
      "17.10432\n",
      "17.94548\n",
      "20.32802\n",
      "23.16144\n",
      "19.88414\n",
      "33.25054\n",
      "23.63376\n"
     ]
    }
   ],
   "source": [
    "from matplotlib.pyplot import *\n",
    "from random import *\n",
    "import numpy as np\n",
    "import pylab as pl\n",
    "\n",
    "\n",
    "\n",
    "def peter(n):\n",
    "    res_peter=[]\n",
    "    for i in range(n):\n",
    "        k=1\n",
    "        a=randint(0,1)\n",
    "        while a<1:\n",
    "            k=k+1\n",
    "            a=randint(0,1)\n",
    "        res_peter.append(2**k)\n",
    "    return res_peter\n",
    "\n",
    "print (peter(1000),'\\n')\n",
    "\n",
    "def gain_peter(n):\n",
    "    A=peter(n)\n",
    "    #print(A)\n",
    "    E=0\n",
    "    for k in A:\n",
    "        E += k \n",
    "    return E/float(n)\n",
    "\n",
    "for k in range(50):\n",
    "    print (gain_peter(100000))\n",
    "        \n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercice 5 : le jeu de Monty Hall"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Extrait de la page wikipedia (titre : \"Problème de Monty Hall\") :\n",
    "\n",
    "Le problème de Monty Hall est un casse-tête probabiliste librement \n",
    "inspiré du jeu télévisé américain \"Let's Make a Deal\". \n",
    "Il est simple dans son énoncé, mais non intuitif dans sa résolution \n",
    "et c'est pourquoi on parle parfois à son sujet de \"paradoxe de Monty Hall\". \n",
    "Il porte le nom de celui qui a présenté ce jeu aux Etats-Unis \n",
    "pendant treize ans, Monty Hall.\n",
    "(...)\n",
    "\n",
    "«Supposez que vous êtes sur le plateau d'un jeu télévisé, \n",
    "face à trois portes et que vous devez choisir d'en ouvrir une seule, \n",
    "en sachant que derrière l'une d'elles se trouve une voiture et derrière \n",
    "les deux autres des chèvres. Vous choisissez une porte, disons la numéro 1, \n",
    "et le présentateur, qui sait, lui, ce qu'il y a derrière chaque porte, \n",
    "ouvre une autre porte, disons la numéro 3, porte qui une fois ouverte \n",
    "découvre une chèvre. Il vous demande alors : \n",
    "\"désirez-vous ouvrir la porte numéro 2 ?\". A votre avis, \n",
    "est-ce à votre avantage de changer de choix et \n",
    "d'ouvrir la porte 2 plutôt que la porte 1 initialement \n",
    "choisie ?»\n",
    "\n",
    "\n",
    "Simulez cette expérience pour vous aider à trouver la réponse. \n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Une 1ère résolution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Nombre de victoires quand on reste : 33217\n",
      "Nombre de victoires quand on change : 66783\n"
     ]
    }
   ],
   "source": [
    "from random import *\n",
    "\n",
    "\n",
    "je_change_et_je_gagne= 0\n",
    "je_ne_change_pas_et_je_gagne = 0\n",
    "portes = [\"voiture\", \"chèvre\", \"chèvre\"]\n",
    "\n",
    "## on choisy la congiguration avec la voiture derrière la porte 0\n",
    "## cela ne réduit pas la généralité du résultat...\n",
    "\n",
    "for i in range(100000):    ### On fait 10000 parties du jeu\n",
    "\n",
    "    \n",
    "    porte_choisie = portes[randint(0,2)]  ### je choisis une porte au hasard\n",
    "\n",
    "    # Le présentateur ouvre une des deux autres portes \n",
    "    # derrière laquelle se trouve une chèvre. \n",
    "    \n",
    "    \n",
    "    if porte_choisie == \"voiture\":\n",
    "        autre_porte = 'chèvre'\n",
    "        \n",
    "        ### Si j'ai choisi la voiture, l'autre porte cache une chèvre\n",
    "    \n",
    "    else:\n",
    "        autre_porte = 'voiture'\n",
    "        \n",
    "        ### sinon, la voiture est derrière l'autre porte\n",
    "        \n",
    "    # NOTA BENE : int(False) == 0 et int(True) == 1 en Python\n",
    "    \n",
    "    je_change_et_je_gagne += int(autre_porte == 'voiture')\n",
    "    je_ne_change_pas_et_je_gagne += int(porte_choisie == 'voiture')\n",
    "\n",
    "\n",
    "print(\"Nombre de victoires quand on reste :\",je_ne_change_pas_et_je_gagne)\n",
    "print(\"Nombre de victoires quand on change :\",je_change_et_je_gagne)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Une 2ème résolution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "from random import *\n",
    "\n",
    "\n",
    "\n",
    "def monty_hall(n):\n",
    "    je_ne_change_pas_et_je_gagne = 0\n",
    "    je_change_et_je_gagne=0\n",
    "    for k in range(n):\n",
    "        porte_voiture=randint(0,2)  \n",
    "                ## la voiture est derrière une porte choisie au hasard\n",
    "        premier_choix=randint(0,2)\n",
    "                ## la 1ère porte désignée est choisie au hasard\n",
    "        if premier_choix==porte_voiture:\n",
    "            je_ne_change_pas_et_je_gagne += 1\n",
    "        else:\n",
    "            je_change_et_je_gagne += 1\n",
    "    SC=je_ne_change_pas_et_je_gagne\n",
    "    EC=je_change_et_je_gagne\n",
    "    print(\"Sur %g essais,\"%n,'\\n') \n",
    "    print(\"il y a %g chances de gagner en changeant\"%EC,\"\\n\")\n",
    "    print(\"contre %g chances de gagner sans changer\"%SC)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sur 1000 essais, \n",
      "\n",
      "il y a 658 chances de gagner en changeant \n",
      "\n",
      "contre 342 chances de gagner sans changer\n"
     ]
    }
   ],
   "source": [
    "monty_hall(1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sur 10000 essais, \n",
      "\n",
      "il y a 6654 chances de gagner en changeant \n",
      "\n",
      "contre 3346 chances de gagner sans changer\n"
     ]
    }
   ],
   "source": [
    "monty_hall(10000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sur 100000 essais, \n",
      "\n",
      "il y a 66663 chances de gagner en changeant \n",
      "\n",
      "contre 33337 chances de gagner sans changer\n"
     ]
    }
   ],
   "source": [
    "monty_hall(100000)"
   ]
  }
 ],
 "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.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
