{"cells":[{"metadata":{},"cell_type":"markdown","source":"# TP 4 : Simulation, estimation d'une probabilité, d'une espérance\n"},{"metadata":{},"cell_type":"markdown","source":"Pour simuler des variables aléatoires, on peut utiliser la bibliothèque numpy.random que l'on importe par :"},{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy.random as rd","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"rd.random()\n\nLa commande rd.random() renvoie un réel choisi au hasard dans\nl'intervalle $[0;1[$ suivant une loi de probabilité uniforme continue\nsur $[0;1[$.\n\nEn particulier, pour simuler à l'aide de Python une variable aléatoire\nqui suit une loi de Bernoulli de paramètre $p$, on peut écrire\nrd.random() < p qui renverra True avec une probabilité\n$p$. On identifie alors True avec $1$ et False avec $0$.\n\nrd.randint(debut,fin)\n\nDe la même façon, on peut tirer au hasard (et uniformément) un entier\nplutôt qu'un réel. Dans ce cas, la commande à utiliser est\n\\texttt{rd.randint(debut,fin)} qui tire au hasard avec une probabilité\nuniforme un entier dans l'intervalle $[\\text{début},\\text{fin}[$.\nNoter que l'on peut aussi simuler directement une variable aléatoire\n$X \\sim \\mathcal U([\\![a;b]\\!])$ en écrivant\n\n\nnp.floor((b+1-a)*rd.random()+a)\n\n\nrd.geometric(p)\n\nLa fonction rd.geometric(p) permet de simuler une variable\naléatoire qui suit une loi géométrique de paramètre $p$. Pour rappel,\nsi $X$ renvoie le rang du premier succès dans une infinité d'expériences\nde Bernoulli mutuellement indépendantes, $X\\sim\\mathcal G(p)$ où $p$\nest la probabilité d'un succès.\n\nrd.binomial(n,p)\n\nDe la même façon, on peut simuler une variable aléatoire qui suit une\nloi binomiale de paramètres $n$, $p$ avec la commande\nrd.binomial(n,p). Pour rappel, le nombre de succès obtenus lors\nd'une répétition de $n$ expériences de Bernoulli mutuellement\nindépendantes de probabilité de succès $p$ suit une loi binomiale de\nparamètres $n$, $p$.\n\nrd.poisson(lambda)\n\nEnfin, rd.poisson(lambda) simule une variable qui suit une loi\nde Poisson de paramètre lambda.\n\n"},{"metadata":{},"cell_type":"markdown","source":" ## Exercice\n\n    \n    Comment simuler une variable X donnant la somme de deux dés ?"},{"metadata":{"trusted":true},"cell_type":"code","source":"# Réponse","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Codes de référence"},{"metadata":{"trusted":true},"cell_type":"code","source":"## Pour estimer une probabilité d'un évenement, on peut simuler un grand nombre de fois l'expérience et\n## approximer la probabilité par la fréquence empirique de réalisation de l'événement.\n## C'est-à-dire le quotient du nombre de réalisation sur le nombre de tentative.\n## La justification théorique est donnée par la loi des grands nombres (cours p124)\n\nCompteur=0\nN=2000 #Nbre_essai\nfor i in range(N):\n    if ... succès... :\n        Compteur=Compteur+1\nprint(Compteur/N)        \n    \n## Pour estimer une espérance d'une variable X, on peut simuler un grand nombre de fois la variable X et\n## approximer l'espérance par la moyenne empirique des simulations obtenues.\n## La justification théorique est donnée par la loi des grands nombres (cours p125)\n\nE=O\nfor i in range(N):\n    E=E+simuX() # où simuX() simule la variable X \nprint(E/N)","execution_count":2,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n## Estimation d'une probabilité\n\n## Exercice 45\n\n Ecrire une fonction Python qui prend en argument  $k\\in [\\![3;18]\\!]$ et renvoie une approximation de la probabilité que la somme de trois dés équilibrés donne $k$.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"# question 1\ndef compte( ... ):\n    \n\n        \n# tests \n\nprint(compte(9),compte(10))\n        \n        ","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercice 46\n\nSoient $X,$ $Y$ deux variables aléatoires qui suivent une loi uniforme sur $[\\![1 ; n]\\!]$. Écrire un programme Python qui permet de donner une valeur approchée de $P\\left(E_n\\right)$ où $E_n$ est l'événement \"X/Y est un entier.\""},{"metadata":{"trusted":false},"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy.random as rd\n\ndef estimation(n):\n    Compteur=0\n    \n    \n\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n## Estimation d'une espérance\n\n## Exercice 47"},{"metadata":{"trusted":false},"cell_type":"code","source":"## question 1\n\ndef simulX():\n    tirs=0\n    pile=0\n    while pile ... :\n        if rd.random()<1/2 :\n            pile ...\n        else : \n            pile ...\n        tirs ...\n    return ... \n\n# N'oubliez pas de texter votre code\n","execution_count":5,"outputs":[{"output_type":"stream","text":"  File \"<input>\", line 6\n    while pile ... :\n               ^^^\nSyntaxError: invalid syntax\n","name":"stderr"},{"output_type":"error"}]},{"metadata":{"trusted":false},"cell_type":"code","source":"## question 2\n\ndef moyenne(n):\n    \n    \n\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# question 3 : Le code qui a généré la courbe de l'exercice.\n\ndef graphe(n):\n    s=0\n    L=[]\n    for i in range(1,n+1):\n        s+=simulX()\n        L.append(s/i)\n    return L \n\nplt.plot(np.linspace(1,200,200),graphe(200),'b') \nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercice 48"},{"metadata":{},"cell_type":"markdown","source":"Une urne contient trois boules : une rouge, une bleue et une blanche. On tire avec remise dans l'urne jusqu'à l'apparition de la première boule blanche. Soit $X$, la variable aléatoire égale au nombre de boules rouges tirées. 'Ecrire un programme qui permet d'approximer l'espérance et la variance de $X$.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import numpy.random as rd\n\ndef simulationUrne():\n    # On pourra adopter les conventions :\n    # 1 pour rouge\n    # 2 pour bleu\n    # 3 pour blanc","execution_count":2,"outputs":[{"output_type":"stream","text":"  File \"<basthon-input-2-7433753f184b>\", line 7\n    # 3 pour blanc\n                  ^\nSyntaxError: incomplete input\n","name":"stderr"}]},{"metadata":{},"cell_type":"markdown","source":""},{"metadata":{"trusted":true},"cell_type":"markdown","source":"## Exercice 50"},{"metadata":{"trusted":false},"cell_type":"code","source":"\n\n","execution_count":5,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"\n## Exercice 54"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"}},"nbformat":4,"nbformat_minor":2}