http://lycee.lagrave.free.fr/maths/python/pile_face.py # -*

Transcription

http://lycee.lagrave.free.fr/maths/python/pile_face.py # -*
TS. DM7 - Correction
♣
I. Pile ou Face ?
On lance trois fois de suite une pièce de monnaie. On compte combien de fois pile (ou face) tombe lors de ces trois lancers.
Voici un programme Python, qui permet d’obtenir par exemple un million de simulations. :
http://lycee.lagrave.free.fr/maths/python/pile_face.py
Listing 1: Simulation de trois lancers successifs d’une pièce de monnaie
1
2
3
4
# -* - coding : utf -8 -* from random import randint
# ## On lance trois fois de suite une pièce de monnaie .
# ## On compte combien de fois pile ( ou face ) tombe
5
6
7
8
9
10
11
12
13
def piece ( n ) :
T = []
for k in range ( n ) :
X = 0
for j in range (3) :
X += randint (0 ,1)
T += [ X ]
return ([ T . count ( i ) / float ( n ) for i in range (0 ,4) ])
14
15
print piece (1000000)
sachant que :
– randint(0,1) renvoie un entier aléatoirement compris entre 0 et 1 ;
– T.count(i) compte le nombre de fois où i apparaît dans la liste T .
1. Interpréter l’affichage obtenu à la suite de l’exécution de l’algorithme précédent.
Voici un exemple d’affichage suite à l’exécution de l’algorithme :
>>>
[0.125109 , 0.375204 , 0.374274 , 0.125413]
Cette liste représente la distribution des fréquences d’un échantillon de taille 100 000 (l’ensemble des fréquences
de chaque valeur de l’échantillon) c’est une approche « fréquentiste » de la loi de probabilité de la variable aléatoire X qui comptabilise le nombre de pile (ou face) lors de ces trois lancers. Cette « Approche fréquentiste » exige
de simuler un grand nombre de fois l’expérience, si l’on ne veut pas se trouver devant des résultats expérimentaux
ridicules, parce que la convergence dans la loi forte des grands nombres est lente.
Cet algorithme est donc un moyen expérimental pour trouver la probabilité d’un événement associé à une expérience aléatoire que l’on peut répéter. « Soit n un entier naturel non nul. Lorsque l’on répète n fois, de façon indépendante, une expérience aléatoire, la fréquence f d’une issue a tendance à se stabiliser, lorsque n devient grand,
autour d’une valeur p. On choisit alors cette valeur p comme probabilité de l’issue. »
On obtient par simulation la loi de probabilité de X :
X = xi
p (X = x i )
0
1
2
3
0,125 109
0,375 204
0,374 274
0,125 413
2. Déterminer les valeurs théoriques associées à cette simulation.
La loi de probabilité de X est obtenue par exemple à l’aide de l’arbre pondéré page suivante.
X = xi
p (X = x i )
0
1
2
3
0,125
0,375
0,375
0,125
où la variable aléatoire X comptabilise le nombre de fois où pile est obtenu à la suite de ces trois lancers.
µ
¶ µ
¶ µ
¶
1 1 1 1
1 1 1
1 1 1
1 1 1
3
P (X = 0) = × × = = 0,125
P (X = 1) =
× × + × × + × ×
= = 0,375
2 2 2 8
2 2 2
2 2 2
2 2 2
8
1 1 1 1
P (X = 3) = × × = = 0,125
2 2 2 8
µ
¶ µ
¶ µ
¶
1 1 1
1 1 1
1 1 1
3
P (X = 2) =
× × + × × + × ×
= = 0,375
2 2 2
2 2 2
2 2 2
8
1
2
1
2
P
1
2
1
2
1
2
−−−→ X = 3
F
−−−→ X = 2
P
−−−→ X = 2
F
−−−→ X = 1
P
−−−→ X = 2
F
−−−→ X = 1
P
−−−→ X = 1
F
−−−→ X = 0
F
1
2
•
1
2
P
P
1
2
1
2
1
2
P
F
1
2
F
1
2
1
2
1
2
Remarque : On reconnaît le schéma de Bernouilli où les paramètres sont : n = 3 p = 0, 5 q = 0, 5
à !µ ¶ µ ¶
à !µ ¶ µ ¶
3 1 1 1 2 3
3 1 0 1 3 1
P (X = 1) =
On en déduit : P (X = 0) =
= = 0, 125
= = 0, 375
2
8
1 2
2
8
0 2
II. Tirage de boules dans des urnes.
On peut adapter le programme précédent à la situation suivante : On dispose de trois urnes, la première contenant 7 boules
blanches et 4 noires, la deuxième 5 blanches et 2 noires, la troisième 6 blanches et 3 noires.
On tire une boule dans chaque urne et on compte le nombre de boules blanches obtenues.
1. Compléter le listing pour obtenir l’affichage, sur un million de simulations, de la loi de probabilité de la variable
aléatoire qui comptabilise le nombre de boules blanches obtenues à la suite de ces trois tirages.
http://lycee.lagrave.free.fr/maths/python/tirages_boules.py
9
10
11
9
5
6
7
8
5
6
7
1
2
3
4
1
2
3
4
5
6
7
8
1
2
3
4
Listing 2: Simulation d’un tirage de boules dans des urnes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -* - coding : utf -8 -* from random import randint
# ## On dispose de trois urnes , on tire une boule dans chaque urne
# ## On compte le nombre de boules blanches obtenues
def boules ( n ) :
T = []
for k in range ( n ) :
X = 0
if randint (1 ,11) <= 7 :
X += 1
if randint (1 ,7) <= 5 :
X += 1
if randint (1 ,9) <= 6 :
X += 1
T += [ X ]
return ([ T . count ( i ) / float ( n ) for i in range (0 ,4) ])
17
18
print boules (1000000)
Voici un exemple d’affichage suite à l’exécution de l’algorithme :
>>>
[0.034606 , 0.216381 , 0.445771 , 0.303242]
2. Déterminer la loi de probabilité de la variable aléatoire associée à cette simulation.
Soit X la variable aléatoire qui comptabilise le nombre de boules blanches obtenues à la suite de ces trois tirages.
Une issue de cette expérience aléatoire est un triplet (a, b, c)
où a est une boule de l’urne 1 où b est une boule de l’urne 2 et c est une boule de l’urne 3.
• X = 0 lorsque le triplet obtenu est (N , N , N ) donc
P (X = 0) =
4 2 3
24
8
× × =
=
' 0, 034
11 7 9 693 231
• X = 1 lorsque
est (B, N
µ le triplet ¶obtenu
µ
¶ , Nµ ) ou (N , B, ¶N ) ou (N , N , B ) donc :
7 2 3
4 5 3
4 2 6
150
50
P (X = 1) =
× × +
× × +
× ×
=
=
' 0, 216
11 7 9
11 7 9
11 7 9
693 231
• X = 2 lorsque
est (B, B,
µ le triplet ¶obtenu
µ
¶ Nµ) ou (B, N , B¶ ) ou (N , B, B ) donc :
7 5 3
7 2 6
4 5 6
309 103
P (X = 2) =
=
× × +
× × +
× ×
=
' 0, 445
11 7 9
11 7 9
11 7 9
693 231
• X = 3 lorsque le triplet obtenu est (B, B, B ) donc
P (X = 3) =
70
7 5 6 210
× × =
=
' 0, 303
11 7 9 693 231
D’où la loi de probabilité de X :
X = xi
p (X = x i )
0
8
231
1
50
231
2
103
231
3
70
231
III. Tirage de boules avec remise.
Simulons le tirage successif de quatre boules avec remise
dans une urne contenant 7 boules blanches et 3 boules
noires. Comptons la fréquence des tirages contenant
– exactement deux boules blanches ;
– au moins une boule blanche.
9
10
5
6
7
8
1
2
3
4
1. Compléter le listing pour obtenir sur un million de simulations, la fréquence des tirages contenant exactement deux
boules blanches. http://lycee.lagrave.free.fr/maths/python/tirages_boules_avec_remise.py
Listing 3: Simulation d’un tirage de boules avec remise
1
2
3
4
# -* - coding : utf -8 -* from random import randint
# ## On simule le tirage successif de quatre boules avec remise
# ## On affiche la fréquence des tirages contenant nb boules blanches .
5
6
7
8
9
10
11
12
13
14
15
def boule (n , nb ) :
X = 0
for k in range ( n ) :
B = 0
for j in range (1 ,5) :
if randint (1 ,10) <= 7 :
B += 1
if B == nb :
X += 1
return ( X / float ( n ) )
16
17
print boule (1000000 ,2)
Voici un exemple d’affichage suite à l’exécution de l’algorithme :
>>>
0.264272
2. Modifier l’affichage du listing précédent pour obtenir la fréquence des tirages contenant au moins une boule blanche.
Obtenir au moins une boule blanche est le contraire d’en obtenir aucune, il suffit donc de modifier l’affichage
ligne 17 du listing précédent par :
.
print 1 - boule (1000000 ,0)
Voici un exemple d’affichage suite à l’exécution de l’algorithme modifié :
>>>
0.991988
3. Calculer les résultats théoriques associées à cette simulation.
Le tirage se fait avec remise. La probabilité d’obtenir (N , N , B, B ) est :
3
7
7
441
3
×
×
×
=
10 10 10 10 10 000
Les tirages de deux boules exactement sont les
de (N , N , B, B ).
à anagrammes
!
4
4!
=6
On multiplie donc le résultat précédent par :
=
2
2! × 2!
Si X est la variable aléatoire qui comptabilise le nombre de boules blanches obtenues à la suite de ces quatre
tirages.
441
1323
P (X = 2) = 6 ×
=
= 0, 2646
10 000 5000
µ
et
3
P (X > 1) = 1 − P (X = 0) = 1 −
10
¶4
= 0, 9919

Documents pareils