Simuler une loi discrète par inversion
Exercice d'entraînement · niveau 2 · mathématiques approfondies (ECG 2e année), chapitre 13 — Travaux pratiques avec Python · Simulation de lois
Énoncé
Soit de loi donnée par le tableau suivant :
| 1 | 2 | 3 | |
|---|---|---|---|
| 0,2 | 0,5 | 0,3 |
Écrire la fonction de répartition de , en déduire une fonction Python qui simule à partir d'un seul tirage uniforme, et calculer .
Corrigé
La fonction de répartition. Elle est en escalier : pour , pour , pour , et pour .
Le principe d'inversion, adapté au discret. On découpe en trois intervalles de longueurs , et , et l'on rend la valeur associée à celui où tombe : Comme est uniforme, la probabilité de tomber dans chaque intervalle est exactement sa longueur : les trois probabilités voulues sont bien reproduites.
Le code.
import random
def simuler():
u = random.random()
if u < 0.2:
return 1
elif u < 0.7:
return 2
return 3
L'espérance.
Le contrôle à faire tourner. Sur appels, la moyenne des valeurs rendues doit approcher , et la fréquence de la valeur doit approcher . Deux contrôles valent mieux qu'un : le premier vérifie l'échelle, le second la répartition. Une erreur classique — écrire u <= 0.2 puis u <= 0.5 au lieu de 0.7 — passerait le premier contrôle de justesse et échouerait franchement au second.
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.