Adloun

Compter des succès

Exercice supplémentaire · niveau 1 (application) · mathématiques appliquées (ECG 1re année), chapitre 11 — Informatique et algorithmique · Simulation

Énoncé

Écrire succes(n, p) qui compte, à l'aide de rd.random, le nombre de succès en épreuves indépendantes de probabilité . Comparer la fréquence observée à pour et .

Corrigé

Le code.

import numpy.random as rd

def succes(n, p):
    c = 0
    for _ in range(n):
        if rd.random() < p:     # cet evenement a la probabilite p
            c = c + 1
    return c

n, p = 100000, 0.3
k = succes(n, p)
print(k, k / n, p)      # ~30000   ~0.300   0.3

Pourquoi le test rd.random() &lt; p a la probabilité . La fonction rd.random() rend un réel tiré uniformément dans . La probabilité qu'il tombe dans est la longueur de cet intervalle, soit . Chaque tour de boucle réalise donc une épreuve de Bernoulli de paramètre , indépendante des autres.

La loi de la variable simulée. succes(n, p) compte les succès de épreuves indépendantes de même paramètre : elle suit la loi binomiale , d'espérance et de variance .

L'écart attendu. L'écart-type du compte vaut , donc celui de la fréquence vaut . Lire ou est donc parfaitement normal ; lire signalerait une erreur de code.

Le piège de l'inégalité large. Écrire rd.random() &lt;= p ne change rien en pratique : la probabilité de tirer exactement est nulle. Mais écrire rd.random() &lt; 1 - p inverserait succès et échecs, et la fréquence lue serait — une erreur qui se voit immédiatement à condition de comparer à la valeur théorique, ce qui est tout l'objet de l'exercice.

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.