(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
Lorsqu'on souhaite répéter l'expérience, on remet la boule tirée précédemment dans l'urne avant chaque nouveau tirage.
On donnera les résultats sous la forme de fractions irréductibles.
1.1. On fournit la fonction Python Piece ci-dessous, permettant de simuler le lancer d'une pièce de monnaie équilibrée.
$\quad\;\;$Tester cette fonction et expliquer brièvement son fonctionnement.
$\quad\;\;$On conviendra que la fonction renvoie True si on obtient "Pile" et False sinon.
# Exécuter cette cellule pour tester la fonction Piece
from random import*
def Piece():
"fonction qui simule le lancer d'une pièce équilibrée"
return random()<0.5
Piece()
1.2. a. On tire une boule de l'urne n°1. Quelle est la probabilité qu'elle soit rouge ?
$\quad\;\;$b. Écrire une fonction Python urne_1 permettant de simuler le tirage aléatoire d'une boule de l'urne n°1.
$\quad\quad\;$La fonction renverra True si la boule est rouge et False sinon.
# Écrire ici la fonction urne_1
# Exécuter cette cellule pour tester la fonction urne_1
$\quad\;\;$c. On tire une boule de l'urne n°2. Quelle est la probabilité qu'elle soit rouge?
# Écrire ici la fonction urne_2
# Exécuter cette cellule pour tester la fonction urne_2
1.3. a. Écrire une fonction Python experience qui simule le protocole de l'expérience :
$\quad\quad\;$Lancer d'une pièce de monnaie puis tirage aléatoire d'une boule dans l'urne correspondante.
$\quad\quad\;$La fonction renverra le booléen True ou False correspondant à la couleur de la boule obtenue.
$\quad\quad\;$On utilisera la même convention pour les couleurs que dans les fonctions urne_1 et urne_2.
$\quad\;$b. Tester cette fonction.
# Écrire ici la fonction experience
# Tester la fonction ici
1.5. a. Écrire une fonction Python repetition qui simule successivement 100 fois l'expérience et renvoie le nombre de boules rouges obtenues.
$\quad\;\;$b. Tester cette fonction.
# Écrire ici la fonction
# Tester la fonction ici
1.6. a. Adapter la fonction repetition pour qu'elle reçoive n en argument et renvoie la fréquence de boules rouges obtenues lors de $n$ expériences.
# Écrire ici la fonction modifiée
$\quad$b. Tester cette fonction pour obtenir les fréquences de boules rouges pour $1000$ puis $10000$ expériences successives.
# Tester la fonction ici
# Tester la fonction ici
1.7. a. Réaliser un arbre de probabilités pour modéliser la situation étudiée.
$\quad\;\;$On pourra noter respectivement $U_1$ et $R$ les événements "On a tiré la boule de l'urne n°1" et "La boule tirée est Rouge".
$\quad\;\;$b. Calculer la probabilité que la boule obtenue soit rouge. Comparer avec les fréquences obtenues en 1.7.b.
Dans cette partie, on va évaluer la probabilité d'une cause connaissant le résultat de l'expérience.
Ainsi, sachant qu'une boule rouge a été tirée, on souhaite évaluer la probabilité que cette boule ait été tirée de l'urne n°1, c'est à dire la probabilité qu'on ait obtenu "Pile" lors du lancer de la pièce de monnaie.
2.1. Démontrer le théorème suivant :
Théorème de Bayes:
Étant donné $A$ et $B$ deux événements de probabilités non nulles, on a :
$$\displaystyle p_B(A)=\frac{p_A(B)\;p(A)}{p(B)}=\frac{p_A(B)\;p(A)}{p_A(B)\;p(A)+p_{\bar{A}}(B)\;p(\bar{A})}$$
2.2. À l'aide du théorème de Bayes, déterminer la probabilité que la boule ait été tirée de l'urne n°1 sachant qu'elle est rouge.
2.3 On souhaite maintenant vérifier expérimentalement les résultats précédents. La fonction Python Synthese donnée ci-dessous permet d'effectuer une répétition de l'expérience et renvoie un tableau consignant une synthèse des résultats obtenus.
$\quad$a. Exécuter cette cellule.
$\quad\;\;\;$Attention, l'exécution de cette cellule nécessite que les fonctions Piece, urne_1 et urne_2 aient été définies précédemment.
import IPython ; from IPython.display import display, HTML
def Synthese(n=500,f=[urne_2,urne_1]):
"""
Fonction qui génère une liste de n couples contenant chacun :
- une information Pile/Face (True/False)
- une information Rouge/Vert (True/False)
"""
#f est la liste des fonctions de simulations de tirages dans les urnes
res=[] # stockage des résultats (True pour urne n°1, False pour urne n°2)
for k in range(n):
Choix=Piece() # lancer d'une pièce
res.append((Choix,(f[Choix]()))) # ajout du couple pièce/boule dans la liste des résultats
return res
def Genere_html(res):
"""
Fonction qui génère un affichage de la liste des résultats (format html)
"""
#code html pour la pièce (Face et Pile)
Piece_img="<img src='img/Face.png'/ style='display:inline-block;'>","<img src='img/Pile.png'/ style='display:inline-block;'>"
#code html pour les boules colorées (Rouges et vertes)
boule_coloree_img = "<img src='img/Boule_Verte.png' style='display:inline-block;'>","<img src='img/Boule_Rouge.png' style='display:inline-block;'>"
#calculs et génération des affichages (pièces et boules):
pieces=""
contenu_urne={True:"",False:""}
nb_faces=0
nb_rouges=[0,0]
for couple in res:
piece,couleur=couple
pieces+=Piece_img[piece]
contenu_urne[piece]+=boule_coloree_img[couleur]
nb_rouges[piece]+=couleur
nb_faces+=piece
nb_piles=len(res)-nb_faces
#en-tête du rendu html (avec balise de style)
html="<html>"
html+="""
<head>
<meta charset="UTF-8">
<style>
td { font-size: 18px;
background-color: #FFFFFF;
}
</style>
</head>
"""
#corps du rendu html
html+="""
<body>
<table>
<tr>
<td><center>Lancers de pièces</center></td>
<td colspan=2 style='border: 2px solid black;'><br/>"""+pieces+"<br/><br/><center>"+str(nb_piles)+" Piles et "+str(nb_faces)+""" Faces</center></td>
</tr>
<tr>
<td></td>
<td><br/><center>Urne n°1</center></td>
<td><br/><center>Urne n°2</center></td>
</tr>
<tr>
<td><center>Tirages des boules</center></td>
<td style='border: 2px solid black;'><br/>"""+contenu_urne[True]+"<br/><br/><center>"+str(nb_rouges[True])+" boules rouges et "+str(nb_piles-nb_rouges[True])+""" boules vertes</center></td>
<td style='border: 2px solid black;'><br/>"""+contenu_urne[False]+"<br/><br/><center>"+str(nb_rouges[False])+" boules rouges et "+str(nb_faces-nb_rouges[False])+""" boules vertes</center></td>
</tr>
<tr>
<td><center> Total </center></td>
<td colspan=2 style='border: 2px solid black;'><br/><center>"""+str(sum(nb_rouges))+" boules rouges et "+str(len(res)-sum(nb_rouges))+""" boules vertes</center></td>
</tr>
</table>
</body>
"""
html+="</html>"
return html
display(HTML(Genere_html(Synthese())))
$\quad$b. Calculer, parmi les boules tirées de l'urne n°1, la fréquence de celles qui sont rouges. Comparer avec la réponse à la question 1.2.a.
$\quad$c. Calculer la fréquence de boules rouges parmi toutes les boules tirées. Comparer avec la réponse à la question 1.7.b.
$\quad$d. Calculer, parmi les boules rouges tirées, la fréquence de celles qui ont été tirées de l'urne n°1. Comparer avec la réponse à la question 2.2.
(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/