Adloun

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 :

123
0,20,50,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 &lt;= 0.2 puis u &lt;= 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.