Buts du TP Premières simulations avec Python Loi faible des grands

TD Python
MP*
Buts du TP
L’objet mathématique décrivant le comportement d’un dé (non pipé) à
six faces s’appelle une variable aléatoire, suivant une loi dite uniforme
sur l’ensemble J1, 6 K.
Quelle est l’espérance E de cette loi de probabilité ?
Quelle est la variance σ 2 de cette loi ?
On souhaite :
– faire des simulations de n lancers et évaluer les moyennes obtenues ;
– observer cette moyenne lorsque n tend vers +∞ (loi faible des grands
nombres) ;
– observer la distribution des valeurs sur différents ensembles de 100
lancers (théorème central limite) ;
Premières simulations avec Python
La bibliothèque random fournit la fonction randint.
1. Écrire une fonction tirage telle que tirage() retourne une valeur parmi
J1, 6K, chacune avec probabilité 1/6.
2. Écrire une fonction prenant un entier N > 0 en argument, réalisant
N tirages consécutifs (on parle de « run »), et renvoyant la moyenne des
résultats obtenus.
>>> run(1000)
3.462
>>> run(1000)
3.47
3. Construire un tableau constitué des résultats de 104 runs consécutifs
de 102 tirages.
4. Parmi ces 104 runs :
– Quelle est la moyenne... des moyennes ?
– Quelle est la moyenne maximale qui a été atteinte ? Et la minimale ?
– Combien de runs ont fourni une moyenne majorée par 3,4 ? Et minoré
par 3,6 ?
– Même chose en remplaçant 3,4 et 3,6 par 3 et 4.
Loi faible des grands nombres
Si on note Yn la variable aléatoire égale à la moyenne après n lancers
aléatoires, alors l’espérance de Yn vaut 7/2, et on a même d’après la loi
faible des grands nombres :
∀ε > 0,
P(|Yn − 7/2| > ε) −→ 0.
n→+∞
1. Écrire une fonction prenant en entrée deux entiers a, b > 0, réalisant
un run de a × b tirages, et retournant une liste constituée des moyennes
obtenues (depuis le début) tous les b runs. Cette fonction retourne donc
une liste de a flottants.
Dans l’exemple suivant, on réalise deux runs de 1000 tirages, en notant
les résultats intermédiaires tous les 200 tirages.
>>> ab_run(5, 200)
[3.425, 3.4725, 3.5383333333333336, 3.51875,
3.5089999999999995]
>>> ab_run(5, 200)
[3.4, 3.48, 3.4599999999999995, 3.47875, 3.501]
1
TD Python
MP*
2. Exécuter abrun(10, 10k ) pour k ∈ J3, 6K.
3. Représenter l’évolution de la moyenne lors de n runs.
Théorème central limite
X1 + ...XN
(qui est une variable aléaN
toire) après N = 100 tirages. On ne touchera plus à cette valeur de N .
Cette moyenne a une espérance E = 7/2 et une variance σ 2 /N . Par
ailleurs, puisque 100 ' +∞, le théorème central limite dit que cette loi
peut être approchée par une « loi normale » N (E, σ 2 /N ) :
√
!
2
N
N
(x
−
E)
exp −
.
N (E, σ 2 /N ) = √
2σ 2
2πσ 2
On va observer la moyenne Y =
1. Tracer cette loi normale pour x ∈ [0, 6].
2. Afficher le tableau constitué des résultats de n runs sous forme d’histogramme.
Pour cet affichage, on utilisera l’instruction pyplot hist(tableau,nombre
de colonnes.
Il faut encore normaliser les deux affichages pour les comparer. L’aire
de la courbe N est égale à 1. L’histogramme doit lui aussi avoir une
aire égale à 1. La somme des hauteurs des colonnes est égale à n. Si
l’on choisit 50 colonnes par exemple, la largeur de chacune est égale à
l’intervalle ∆X = max(tableau) − min(tableau) divisé par 50. L’aire de
l’histogramme est donc égale à n × ∆X/50.
3. Tracer l’histogramme et la courbe n×∆X/50×N sur le même graphe.
4. Observer l’effet d’une augmentation du nombre de runs n.
2