Fiche récapitulative générée pour impression / export PDF.

1ère · Algorithmique et programmation en Python

Simuler une expérience aléatoire et la loi binomiale

Simuler une épreuve de Bernoulli

Une épreuve de Bernoulli de paramètre pp a deux issues : succès (probabilité pp) ou échec (probabilité 1p1-p). On la simule avec random.random(), qui renvoie un décimal dans [0;1[[0\,;\,1[ :

`python
import random

p = 0.3
tirage = random.random()
if tirage < p:
print("Succès")
else:
print("Échec")
`

Pourquoi ça marche : random.random() renvoie une valeur uniformément répartie dans [0;1[[0\,;\,1[, donc la probabilité que tirage < p soit vraie est exactement pp.

Simuler une réalisation de la loi binomiale

La loi binomiale B(n;p)\mathcal{B}(n\,;\,p) compte le nombre de succès parmi nn répétitions indépendantes d'une épreuve de Bernoulli de paramètre pp. On simule cela avec une boucle qui répète nn fois l'épreuve, en comptant les succès :

`python
import random

n = 10
p = 0.3
succes = 0
for i in range(n):
if random.random() < p:
succes = succes + 1

print("Nombre de succès :", succes)
`

Chaque exécution de ce programme simule une réalisation de la variable aléatoire XB(10;0,3)X \sim \mathcal{B}(10\,;\,0{,}3).

Estimer une probabilité par simulation répétée

Pour estimer P(X=k)P(X=k), on répète la simulation précédente un grand nombre de fois, en comptant combien de fois on obtient exactement kk succès :

`python
import random

n = 10
p = 0.3
k = 3
nb_simulations = 5000
compteur = 0

for simulation in range(nb_simulations):
succes = 0
for i in range(n):
if random.random() < p:
succes = succes + 1
if succes == k:
compteur = compteur + 1

frequence = compteur / nb_simulations
print("Fréquence estimée de P(X=3) :", frequence)
`

Remarque : ce programme contient une boucle dans une boucle. La boucle intérieure simule une réalisation de XX ; la boucle extérieure répète cette simulation nb_simulations fois pour estimer une fréquence.

Exemples

✅ Exemple simple — Simuler un succès ou un échec

`python
import random

p = 0.5
print(random.random() < p)
`

Ce programme affiche True (succès) ou False (échec), chacun avec une probabilité 0,50{,}5.

📘 Exemple intermédiaire — Compter les succès sur 20 répétitions

`python
import random

succes = 0
for i in range(20):
if random.random() < 0.4:
succes = succes + 1

print("Succès :", succes)
`

🔴 Exemple avancé — Estimer P(X=0)P(X=0) par simulation

`python
import random

n = 8
p = 0.2
nb_simulations = 10000
compteur = 0

for simulation in range(nb_simulations):
succes = 0
for i in range(n):
if random.random() < p:
succes = succes + 1
if succes == 0:
compteur = compteur + 1

frequence = compteur / nb_simulations
print("Fréquence estimée de P(X=0) :", frequence)
`

La probabilité théorique est P(X=0)=(80)×0,20×0,88=0,880,168P(X=0) = \dbinom{8}{0}\times0{,}2^0\times0{,}8^8 = 0{,}8^8 \approx 0{,}168. Avec 1000010\,000 simulations, la fréquence observée doit s'en approcher.

À retenir

- random.random() < p simule une épreuve de Bernoulli de paramètre pp.
- Répéter cette épreuve nn fois en comptant les succès simule une réalisation de la loi binomiale B(n;p)\mathcal{B}(n\,;\,p).
- Pour estimer P(X=k)P(X=k), on répète la simulation de XX un grand nombre de fois (boucle dans une boucle) et on calcule la fréquence des simulations où l'on obtient exactement kk succès.

Exercices de la leçon

Exercice 1

Quelle instruction simule une épreuve de Bernoulli de paramètre p=0,25p=0{,}25 ?

Corrigé

random.random() renvoie un décimal uniforme dans [0;1[[0\,;\,1[ ; la condition < 0.25 est donc vraie avec probabilité exactement 0,250{,}25.

Exercice 2

Pour simuler une réalisation de la loi binomiale B(n;p)\mathcal{B}(n\,;\,p), il suffit de simuler une seule épreuve de Bernoulli de paramètre pp.

Corrigé

La loi binomiale compte le nombre de succès parmi nn répétitions de l'épreuve de Bernoulli : il faut donc répéter l'épreuve nn fois dans une boucle, pas une seule fois.

Exercice 3

Dans le programme d'estimation de P(X=k)P(X=k) par simulation, pourquoi y a-t-il une boucle à l'intérieur d'une autre boucle ?

Corrigé

La boucle intérieure (sur range(n)) simule les nn épreuves de Bernoulli d'une réalisation de XX ; la boucle extérieure répète ce processus nb_simulations fois pour estimer une fréquence représentative de P(X=k)P(X=k).

Exercice 4

On simule 2000020\,000 réalisations de XB(5;0,5)X \sim \mathcal{B}(5\,;\,0{,}5) et on obtient une fréquence de 0,0310{,}031 pour l'événement {X=0}\{X=0\}. La valeur théorique est P(X=0)=0,55=0,03125P(X=0)=0{,}5^5=0{,}03125. Que peut-on conclure ?

Corrigé

Avec un grand nombre de simulations, la fréquence observée se rapproche de la probabilité théorique (loi des grands nombres) ; un petit écart comme ici est normal et attendu.

Exercice 5

Écris un programme Python qui simule n=4n=4 épreuves de Bernoulli de paramètre p=0,6p=0{,}6 pour obtenir une réalisation de XB(4;0,6)X \sim \mathcal{B}(4\,;\,0{,}6), puis répète cette simulation 50005000 fois pour estimer P(X=4)P(X=4) (tous les succès). Affiche la fréquence estimée.

Corrigé

On reproduit le schéma à deux boucles : la boucle intérieure simule une réalisation de la loi binomiale, la boucle extérieure répète la simulation pour estimer une fréquence proche de la probabilité théorique pnp^n (cas particulier où tous les essais sont des succès).

AlphaMath Académie · Simuler une expérience aléatoire et la loi binomiale · Algorithmique et programmation en Python