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() < 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() <= p ne change rien en pratique : la probabilité de tirer exactement est nulle. Mais écrire rd.random() < 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.