Ressources · 1ʳᵉ · Spécialité Mathématiques
Expérimentations : simuler des échantillons
Simuler une variable aléatoire en Python, moyenne d’un échantillon de taille n et fluctuation, proportion des échantillons tels que |m − μ| ⩽ 2σ/√n, effet de la taille de l’échantillon.
À propos de cette page
Simuler une variable aléatoire en Python
Deux fonctions du module random. random() renvoie un nombre réel au hasard dans : pour , la probabilité qu’il tombe dans vaut , la longueur de l’intervalle. randint(a, b) renvoie un entier au hasard entre et , bornes comprises : chacun des entiers a la probabilité .
Simuler une variable aléatoire , c’est écrire une fonction qui renvoie, à chaque appel, une valeur de tirée selon sa loi.
Variable de Bernoulli (elle vaut avec la probabilité , sinon) : la fonction renvoie si random() < p, et sinon. En effet, random() tombe dans avec la probabilité .
Variable à plusieurs valeurs , de probabilités : on découpe en intervalles consécutifs de longueurs . Les seuils du programme sont les probabilités cumulées , puis , et ainsi de suite.
Avec un tableur. =ALEA() joue le rôle de random() : =ALEA()<p renvoie VRAI avec la probabilité . =ALEA.ENTRE.BORNES(a;b) joue celui de randint(a, b), bornes comprises. En recopiant la formule sur lignes, on obtient un échantillon de taille .
Un guichet. Le nombre de clients qui arrivent à un guichet en une minute vaut , ou , avec les probabilités ; ; . Les seuils cumulés sont , puis .
from random import random
def guichet():
u = random()
if u < 0.3:
return 0
elif u < 0.8:
return 1
else:
return 2
Justification. La fonction renvoie lorsque : cet intervalle a pour longueur , donc . Elle renvoie lorsque , de longueur : .
Avec randint. Une joueuse réussit un penalty avec la probabilité . randint(1, 10) renvoie l’un des entiers de à ; le test randint(1, 10) <= 7 est vrai pour d’entre eux, donc avec la probabilité . La fonction suivante simule un tir ( = but).
from random import randint
def tir():
if randint(1, 10) <= 7:
return 1
else:
return 0Réflexe — Je calcule les seuils cumulés, je vérifie que chaque intervalle a pour longueur la probabilité voulue, et je mets la dernière valeur dans le else : c’est le reste de l’intervalle, jusqu’à .
Attention — Les seuils sont cumulés : écrire elif u < 0.5 pour obtenir donnerait l’intervalle , de longueur seulement. Et randint(1, 10) peut renvoyer , alors que range(10) s’arrête à .
1 / 5
Moyenne d’un échantillon de taille n
Échantillon de taille de la loi de : la liste des valeurs obtenues en répétant fois, de façon indépendante, l’expérience qui définit . Sa moyenne est .
En Python, un accumulateur s additionne les valeurs simulées ; on divise par après la boucle.
def moyenne(n):
s = 0
for k in range(n):
s = s + guichet()
return s / n
Fluctuation d’échantillonnage. L’espérance est un nombre fixe : elle ne dépend que de la loi. La moyenne , elle, change d’un échantillon à l’autre : deux appels de moyenne(50) donnent en général deux résultats différents. Ce n’est pas une erreur, c’est l’effet du hasard.
Une fréquence est une moyenne. Si vaut quand un caractère est présent et sinon, la somme compte les : la moyenne est la fréquence du caractère dans l’échantillon ( = nombre de ).
Distance à l’espérance. On mesure l’écart entre l’échantillon et le modèle par . Les simulations montrent que cet écart devient en général plus petit quand augmente.
Estimer une espérance. Quand est inconnue (la moyenne d’une grandeur dans une population, la proportion d’un caractère), on l’estime par la moyenne d’un échantillon tiré au hasard. L’estimation n’est pas exacte, mais elle est en général d’autant plus fiable que est grand : c’est ce que mesure l’écart de la partie suivante.
Espérance du guichet. client par minute.
Quatre échantillons simulés (une exécution réelle de moyenne(n)) :
Aucune moyenne n’est égale à , mais l’écart se resserre quand la taille augmente.
Une fréquence. Sur un échantillon de abonnés, ont ouvert la lettre d’information. En codant l’ouverture et sinon : . Ce nombre décrit cet échantillon ; c’est aussi une estimation de la proportion, inconnue, chez l’ensemble des abonnés, et non sa valeur exacte.
Réflexe — Dans une fonction de moyenne, je repère trois lignes : s = 0 avant la boucle, s = s + … dans la boucle (une valeur simulée par tour), return s / n après la boucle. Et je ne confonds pas (fixe, donnée par la loi) avec (qui change à chaque échantillon).
Attention — Un return s / n indenté dans la boucle s’exécute dès le premier tour : la fonction renvoie alors . Et un échantillon doit être tiré au hasard : les premiers inscrits d’une liste ne forment pas un échantillon aléatoire.
2 / 5
L’écart 2σ/√n
a pour espérance et pour écart type ; est la moyenne d’un échantillon de taille de la loi de .
Constat des simulations (pour assez grand) : dans environ des échantillons, c’est-à-dire En 1re, ce résultat est observé par simulation ; il n’est pas démontré.
Lire une valeur absolue. Pour : .
Variable de Bernoulli de paramètre : et .
Décider (approfondissement, hors programme 2026). Si une moyenne observée sort de l’intervalle, l’écart est surprenant pour le modèle (il n’arrive que dans environ des échantillons) : on met en doute le modèle. Si elle est dans l’intervalle, l’observation est compatible avec le modèle, sans le prouver.
Démonstration (valeur absolue). , en ajoutant aux trois membres.
Démonstration (Bernoulli). . Puis , d’où .
Une durée de trajet. La durée (en minutes) d’un trajet en bus a pour espérance et pour écart type . Pour des échantillons de trajets : . Dans environ des échantillons, . Une moyenne relevée de min sort de cet intervalle : un écart aussi grand n’arrive que dans environ des échantillons.
Une fréquence. Un transporteur annonce que de ses colis arrivent en retard. Pour un colis, vaut s’il est en retard : et . Pour colis : , d’où l’intervalle . Sur colis suivis, sont en retard : : la fréquence sort de l’intervalle. En approfondissement, on met alors en doute l’annonce du transporteur.
Réflexe — Je relève , et ; je calcule ; j’écris l’intervalle centré sur ; je situe la moyenne observée (dans l’intervalle ou non). En approfondissement, je conclus par une phrase dans le contexte : « compatible avec le modèle » ou « le modèle est mis en doute ».
Attention — L’intervalle est centré sur (le modèle), jamais sur la moyenne observée . On utilise l’écart type , pas la variance . Et « » porte sur les échantillons, pas sur les individus d’un échantillon.
3 / 5
Effet de la taille n sur la précision
Demi-largeur de l’intervalle : (sa largeur vaut ). Elle dépend de et de , pas de , et elle diminue quand augmente.
Règle des carrés. Pour tout entier : . Multiplier par divise par ; multiplier par divise par . La précision progresse lentement.
Taille minimale (approfondissement, hors programme 2026). Pour une demi-largeur au plus égale à : , et l’on prend le plus petit entier qui convient.
Démonstration de la règle des carrés. Pour , , donc .
Une chaîne de production (approfondissement). La masse (en g) d’un biscuit a pour espérance et pour écart type . On veut une demi-largeur au plus égale à : , donc . Avec , l’intervalle est : une moyenne relevée de g en sort, le réglage de la chaîne doit être contrôlé.
Quand la racine n’est pas entière (approfondissement). et : , donc . Le plus petit entier qui convient est .
Gagner un facteur 10. Un institut obtient une demi-largeur de avec personnes. Pour , il lui faudrait fois plus de personnes, soit : c’est pourquoi les sondages s’arrêtent souvent à quelques milliers de personnes.
Réflexe — Pour une précision exigée (approfondissement), j’écris l’inéquation , j’isole , j’élève au carré (les deux membres sont positifs et la fonction carré est croissante sur ), puis j’arrondis à l’entier supérieur.
Attention — Diviser la demi-largeur par demande fois plus d’individus, pas fois plus : doubler ne divise que par . Et donne , pas .
4 / 5
Simuler N échantillons : la proportion des cas
Le programme. On simule échantillons de taille ; pour chacun, on calcule sa moyenne et on teste si ; on renvoie la proportion des échantillons qui passent le test. Pour le guichet ( et, avec la formule de la variance, , donc ) :
from math import sqrt
def proportion(N, n):
mu = 0.9
sigma = 0.7
c = 0
for i in range(N):
m = moyenne(n)
e = 2 * sigma / sqrt(n)
if abs(m - mu) <= e:
c = c + 1
return c / N
Ce qu’on observe. Pour assez grand, la valeur renvoyée est proche de . Elle change d’une exécution à l’autre : c’est elle-même une fréquence, calculée sur échantillons, qui se stabilise quand augmente.
Deux tailles à ne pas confondre. = taille de chaque échantillon ; = nombre d’échantillons simulés. Le programme tire valeurs de en tout.
Le test pour . : le test s’écrit , c’est-à-dire .
Trois exécutions réelles de proportion(1000, 49) ont renvoyé ; ; . Les trois valeurs sont proches de sans lui être égales : la proportion fluctue, comme toute fréquence.
Lire le résultat. signifie : sur échantillons de minutes, ont une moyenne comprise entre et client par minute. Ce n’est ni une probabilité portant sur une seule minute, ni une part des clients.
Un modèle mis à l’épreuve. Si l’on remplace dans le programme mu = 0.9 par une valeur fausse, par exemple mu = 1.2, presque aucun échantillon ne passe le test : la proportion s’effondre, loin de .
Réflexe — Je traduis le test du programme en écriture mathématique (abs(m - mu) <= e s’écrit ), je repère le compteur c, et je lis c / N comme une proportion d’échantillons.
Attention — Une valeur comme ou ne contredit pas le cours : la proportion fluctue elle aussi. Et inverser les arguments, proportion(49, 1000), simule échantillons de taille : ce n’est pas la même expérience.
5 / 5
Pour aller plus loin
Espérance, variance, écart type. Le calcul de , et à partir d’une loi, la formule de König-Huygens et la linéarité de l’espérance sont traités dans le chapitre Variables aléatoires réelles.
L’ancien « intervalle de fluctuation » (hors programme). Les anciens programmes (classe de 2nde de 2009) utilisaient, pour une proportion , l’intervalle (avec et ), et la Terminale de 2012 des intervalles de confiance. Ils ne figurent plus dans les programmes actuels. Le lien avec ce chapitre : pour une variable de Bernoulli, ; comme , cette demi-largeur est au plus égale à , avec égalité pour .
Se verra en Terminale. L’inégalité de Bienaymé-Tchebychev démontre que la probabilité d’un écart est au plus , pour toute loi et toute taille ; la valeur d’environ reste, elle, un constat. Voir le chapitre Loi des grands nombres.
random() < pest vrai avec la probabilité ;randint(a, b)renvoie un entier de à , bornes comprises ; pour une loi à plusieurs valeurs, les seuils sont les probabilités cumulées.- Moyenne d’un échantillon : ; elle fluctue d’un échantillon à l’autre, alors que est fixe. Une fréquence est une moyenne de et de . Quand est inconnue, en est une estimation, en général d’autant meilleure que est grand.
- Pour assez grand, dans environ des échantillons : , soit .
- Variable de Bernoulli de paramètre : et .
- multiplié par : divisé par . Taille minimale (approfondissement) : , arrondi à l’entier supérieur.
- La proportion simulée des échantillons qui vérifient le test est proche de ; c’est une fréquence, qui fluctue elle aussi.
Questions fréquentes
Comment simuler une variable aléatoire en Python ?
On utilise random(), qui renvoie un réel au hasard dans [0 ; 1[ : le test random() < p est vrai avec la probabilité p. Pour une loi à plusieurs valeurs, on découpe [0 ; 1[ avec les probabilités cumulées comme seuils. randint(a, b) renvoie un entier de a à b, bornes comprises.
Comment écrire une fonction qui renvoie la moyenne d’un échantillon ?
On initialise un accumulateur s = 0 avant la boucle, on ajoute une valeur simulée à chaque tour (s = s + X()), puis on renvoie s / n après la boucle. Pour une fréquence, on compte les succès et on divise par n.
Que signifie |m − μ| ⩽ 2σ/√n ?
C’est l’écart entre la moyenne m d’un échantillon de taille n et l’espérance μ. Les simulations montrent que, pour n assez grand, environ 95 % des échantillons vérifient cette inégalité, c’est-à-dire μ − 2σ/√n ⩽ m ⩽ μ + 2σ/√n.
Quelle taille d’échantillon faut-il pour une précision donnée ?
On résout 2σ/√n ⩽ a : √n ⩾ 2σ/a, puis n ⩾ (2σ/a)², et on prend l’entier supérieur. Multiplier n par 4 divise l’écart par 2 ; multiplier n par 100 le divise par 10.
Pourquoi la proportion simulée n’est-elle pas exactement 0,95 ?
Parce que c’est une fréquence calculée sur N échantillons tirés au hasard : elle fluctue d’une exécution à l’autre et se rapproche d’environ 0,95 quand N est grand, à condition que la taille n de chaque échantillon soit assez grande.
Moi c'est Ben, j'ai créé ce site pour aider le plus d'élèves possible, partout en France. Je peux aussi reprendre avec toi ce qui coince en cours particulier : en visio, ou à domicile si tu es à Marseille.
Prof de maths à Marseille · Cours particuliers au lycée · Aide aux devoirs