Simuler pour vérifier
Exercice supplémentaire · niveau 2 · enseignement scientifique (première), chapitre 16 — Phénomènes aléatoires
Énoncé
On veut vérifier par simulation le résultat de l'exercice 6, où quatre feux sont verts avec probabilité 0,4 chacun.
import random
def un_trajet(p, n):
"""Compte les feux verts sur un trajet de n feux."""
verts = 0
for _ in range(n):
if random.random() < p:
verts = verts + 1
return verts
def simulation(nb_trajets, p, n):
compte = [0, 0, 0, 0, 0]
for _ in range(nb_trajets):
compte[un_trajet(p, n)] = compte[un_trajet(p, n)] + 1
return [c / nb_trajets for c in compte]
print(simulation(100000, 0.4, 4))
- Le programme contient une erreur qui fausse complètement le résultat. Laquelle ?
- Corriger la ligne fautive.
- Une exécution correcte affiche
[0.1290, 0.3462, 0.3452, 0.1538, 0.0258]. Comparer aux probabilités exactes. - Pourquoi les valeurs affichées ne sont-elles pas exactement les probabilités théoriques ? Que se passerait-il avec 100 trajets seulement ?
Corrigé
1. La ligne qui incrémente le compteur, compte[un_trajet(p, n)]<br>\phantom{xxxx= compte[un_trajet(p, n)] + 1}, appelle un_trajet deux fois. Les deux appels tirent au sort indépendamment et ne donnent en général pas le même nombre de feux verts : on incrémente donc une case en lisant l'ancienne valeur d'une autre. Le tableau final est faux.
2. Il faut stocker le résultat d'un seul tirage :
k = un_trajet(p, n)
compte[k] = compte[k] + 1
3. Les probabilités exactes calculées à l'exercice 6 étaient 0,1296 ; 0,3456 ; 0,3456 ; 0,1536 ; 0,0256. Les fréquences simulées en diffèrent de moins de 0,001 dans chaque cas : l'accord est excellent, comme le laissait prévoir la loi des grands nombres avec 100 000 répétitions.
4. Une simulation est une expérience aléatoire : elle donne des fréquences, qui fluctuent d'une exécution à l'autre. Avec 100 trajets seulement, les écarts atteindraient couramment plusieurs centièmes, et la dernière case — de probabilité 0,0256 — vaudrait souvent 0,01 ou 0,05, voire 0. Une simulation courte ne permet jamais de départager deux modèles proches.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.