Simulation par tableur ou Python
Simulation par tableur ou Python
Simuler, c'est faire jouer le hasard à un ordinateur des milliers de fois en quelques secondes, pour observer comment les fréquences se comportent et estimer une probabilité.
Objectifs
- Comprendre ce qu'est une simulation d'expérience aléatoire.
- Utiliser les fonctions de hasard du tableur (ALEA, ALEA.ENTRE.BORNES) et de Python (module random).
- Calculer la fréquence d'un résultat sur un échantillon de taille \(n\).
- Observer la fluctuation d'échantillonnage et utiliser l'intervalle \(\left[p - \frac{1}{\sqrt{n}}\,;\,p + \frac{1}{\sqrt{n}}\right]\).
1. Expérience aléatoire, échantillon, fréquence
Exemple : sur 50 lancers d'un dé, le 6 sort 11 fois. Sa fréquence est \(f = \dfrac{11}{50} = 0{,}22\). La probabilité théorique est \(\dfrac{1}{6} \approx 0{,}167\) : la fréquence observée est proche, mais pas égale.
On lance une pièce 200 fois et on obtient 94 « face ». Quelle est la fréquence de « face » ?
2. Simuler avec un tableur
- =ALEA() donne un nombre décimal au hasard entre 0 (compris) et 1 (non compris).
- =ALEA.ENTRE.BORNES(1;6) donne un entier au hasard entre 1 et 6 : c'est un lancer de dé.
- =ENT(ALEA()*6)+1 fait la même chose : ALEA()*6 est entre 0 et 6 (exclu), sa partie entière est 0, 1, 2, 3, 4 ou 5, et on ajoute 1.
- =SI(ALEA()<0,3;1;0) donne 1 avec une probabilité de 0,3 et 0 sinon : c'est une épreuve « succès ou échec ».
- =NB.SI(A1:A1000;6)/1000 calcule la fréquence des 6 dans les cellules A1 à A1000.
Exemple résolu
Dans un sac, Fatou a mis 3 billes rouges et 7 billes bleues. Elle tire une bille, note sa couleur, la remet. Écrire une formule de tableur qui simule un tirage (1 si rouge, 0 si bleue), puis la formule de la fréquence des rouges sur 500 tirages placés en B1:B500. Cherche d'abord.
Voir la solution
La probabilité de tirer une rouge est \(\dfrac{3}{10} = 0{,}3\). Dans B1 : =SI(ALEA()<0,3;1;0), recopiée jusqu'à B500.
Fréquence des rouges : =SOMME(B1:B500)/500 (la somme compte les 1, c'est-à-dire les rouges). On peut aussi écrire =NB.SI(B1:B500;1)/500.
Quels nombres peut renvoyer la formule =ENT(ALEA()*6)+1 ?
3. Simuler avec Python
On importe le module random :
- random.randint(1, 6) : entier au hasard entre 1 et 6, bornes comprises.
- random.random() : décimal au hasard entre 0 (compris) et 1 (non compris), comme ALEA().
Le schéma ci-dessous montre la logique de toute simulation :
flowchart LR
A[Compteur a 0] --> B[Tirage au hasard]
B --> C{Succes}
C -- oui --> D[Ajouter 1]
C -- non --> E[Rien]
D --> F[Repeter n fois]
E --> F
F --> G[Frequence egale compteur sur n]
Voici une fonction qui simule \(n\) tirages dans le sac de Fatou et renvoie la fréquence des billes rouges :
import random
def frequence_rouge(n):
rouges = 0
for i in range(n):
if random.random() < 0.3:
rouges = rouges + 1
return rouges / n
print(frequence_rouge(1000))
Exemple résolu : lire un programme
Que renvoie la fonction ci-dessous, et vers quelle valeur ce résultat s'approche-t-il quand \(n\) est grand ?
import random
def mystere(n):
c = 0
for i in range(n):
if random.randint(1, 6) == 6:
c = c + 1
return c / n
Quelle instruction Python simule un lancer de dé ?
4. Fluctuation d'échantillonnage
Fais varier \(p\) avec le curseur : les deux courbes donnent les bornes de l'intervalle selon la taille \(n\) de l'échantillon (en abscisse). Elles se rapprochent de \(p\) quand \(n\) grandit.
Exemple résolu
Un producteur de mangues de Korhogo annonce que 30 % de ses mangues sont assez grosses pour l'export. Un acheteur prend au hasard 100 mangues et en trouve 42 assez grosses. Doit-il douter de l'annonce ? Cherche d'abord.
Pour \(p = 0{,}5\) et des échantillons de taille \(n = 400\), quel est l'intervalle de fluctuation ?
Erreurs fréquentes
- Confondre fréquence observée et probabilité.
- Écrire 0,3 au lieu de 0.3 en Python, ou 0.3 au lieu de 0,3 dans un tableur en français.
- Utiliser random.randint(0, 6) pour un dé (le 0 n'existe pas sur un dé).
- Tirer une conclusion à partir d'un tout petit échantillon.
- Oublier de vérifier les conditions \(n \ge 25\) et \(0{,}2 \le p \le 0{,}8\) avant d'utiliser l'intervalle.
Récapitulatif
- Simuler = remplacer une expérience aléatoire par des tirages faits par une machine, avec les mêmes probabilités.
- Tableur : ALEA(), ALEA.ENTRE.BORNES(1;6), SI(ALEA()<p;1;0), NB.SI.
- Python : random.random(), random.randint(a, b), une boucle for et un compteur.
- La fréquence fluctue d'un échantillon à l'autre, et se stabilise autour de \(p\) quand \(n\) grandit.
- Environ 95 % des fréquences tombent dans \(\left[p - \frac{1}{\sqrt{n}}\,;\,p + \frac{1}{\sqrt{n}}\right]\).
Teste tes connaissances sur ce cours
Crée ton compte gratuitement pour accéder aux quiz associés et suivre ta progression.
