{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![En tête general](img/En_tete_general.png)\n", "\n", "\n", "*(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/*\n", "\n", " Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lancers d'une pièce (corrigé) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "On propose à un joueur de lancer trois fois d’affilée une pièce de monnaie équilibrée.\n", "

\n", "La règle du jeu est la suivante :\n", "
\n", "\n", "
\n", "
\n", " \n", "![Pile ou Face](img/Lancers_piece.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__1. Ecrire une fonction Python piece qui simule le lancer d’une pièce de monnaie, et renvoie 1 (ou True) si le résultat est pile et 0 (ou False) sinon.__\n", "\n", "Aide Python : A l’aide de l’appel from random import randint, on peut utiliser l’instruction randint(a,b) qui renvoie aléatoirement un entier compris entre a et b.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from random import randint\n", "\n", "def piece():\n", " return randint(0,1)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "piece()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__2. Effectuer les instructions suivantes, et expliquer leur lien avec la situation étudiée.__\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 0, 0]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lancers=[ piece() for k in range(3) ]\n", "lancers" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(lancers)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__3. On considère la fonction Python jeux ci-dessous, qui reçoit un entier N en argument et qui renvoie une liste de trois valeurs.__\n", "\n", "__Indiquer ce que représentent, dans le cadre de l’énoncé, cet entier N et les trois valeurs de la liste renvoyée.__\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def jeux(N):\n", "\n", " res=[0,0,0]\n", " \n", " for i in range(N):\n", " \n", " lancers=[piece() for k in range(3)]\n", " nb_piles=sum(lancers)\n", " \n", " if nb_piles==3:\n", " res[0]=res[0]+1\n", " elif nb_piles==2:\n", " res[1]=res[1]+1\n", " else:\n", " res[2]=res[2]+1\n", " \n", " return res" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[128, 364, 508]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "jeux(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " L’organisateur du jeu demande une mise de 1€ pour participer au jeu.\n", "
Si le joueur gagne, il reçoit 4€, et si la partie est nulle, il est remboursé de sa mise.
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__4. Ecrire une fonction gain_algebrique qui reçoit en argument une liste L (qui sera fournie par la fonction jeux) et qui renvoie le gain algébrique du joueur (le gain algébrique du joueur s’obtient en soustrayant la mise du joueur à la somme qu’il reçoit).__\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def gain_algebrique(L):\n", " return L[0]*3+L[1]*0+L[2]*(-1)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-164" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gain_algebrique(jeux(1000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__5. Dans cette question, on suppose que L est une liste générée par la fonction jeux.__\n", "__Que représente le résultat de la saisie ci-dessous?__\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1000" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "L=jeux(1000)\n", "sum(L)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Tester la fonction gm ci-dessous. Que représente le résultat de la saisie proposée ?__" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.097" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def gm(L):\n", " return gain_algebrique(L)/sum(L)\n", "\n", "gm(L)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Tester avec $10$, $100$ puis $10000$ parties. Le jeu semble-t-il favorable au joueur ?__\n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.4, 0.04, -0.1504)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gm(jeux(10)) , gm(jeux(100)) , gm(jeux(10000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__6. Calculer les probabilités que le joueur gagne, que la partie soit nulle, puis que le joueur perde.__\n", "\n", "__Stocker ces $3$ valeurs, dans cet ordre, dans une liste nommée Proba.__\n", "\n", "__Calculer la valeur gm(Proba) et indiquer la valeur obtenue.__ \n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# Créer la liste Proba\n", "Proba=[1/8,3/8,1/2] " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.125" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Exécuter la cellule pour effectuer l'appel à la fonction gm\n", "gm(Proba)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__7. Ecrire une fonction Python ecart qui reçoit en argument la liste L de répartition des résultats d’une série de parties et renvoie l’écart entre le gain moyen de ces parties et la valeur gm(Proba).__" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def ecart(L):\n", " return gm(L)-gm(Proba)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Tester pour des listes de longueur $100$,$10000$,$100000$,$1000000$… Que constate-t-on ?__" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.15500000000000003,\n", " -0.0022000000000000075,\n", " -0.0023799999999999932,\n", " -0.0017580000000000096)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ecart(jeux(100)) , ecart(jeux(10000)) , ecart(jeux(100000)) , ecart(jeux(1000000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Bernoulli](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/Bernoulli.jpg)\n", "\n", "
Jacques Bernoulli (1654-1705) est le premier a avoir démontré la loi des grands nombres.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/*\n" ] } ], "metadata": { "celltoolbar": "Raw Cell Format", "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.7.10" } }, "nbformat": 4, "nbformat_minor": 2 }