Je réserve ici
Spécialité Mathématiques 1ʳᵉ

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
Ce cours de spécialité maths de 1re traite la partie « Expérimentations » du programme de probabilités en cinq parties : simuler une variable aléatoire en Python avec random et randint ou au tableur, écrire la fonction qui renvoie la moyenne d’un échantillon de taille n, calculer l’écart 2σ/√n et situer une moyenne observée, mesurer l’effet de la taille d’un échantillon (taille minimale en approfondissement), puis simuler N échantillons et lire la proportion des cas. Chaque programme Python a été exécuté.
1

Simuler une variable aléatoire en Python

Ce qu’il faut savoir

Deux fonctions du module random. random() renvoie un nombre réel au hasard dans [0;1[ : pour 0⩽a⩽b⩽1, la probabilité qu’il tombe dans [a;b[ vaut b−a, la longueur de l’intervalle. randint(a, b) renvoie un entier au hasard entre a et b, bornes comprises : chacun des b−a+1 entiers a la probabilité 1b−a+1.

Simuler une variable aléatoire X, c’est écrire une fonction qui renvoie, à chaque appel, une valeur de X tirée selon sa loi.

Variable de Bernoulli (elle vaut 1 avec la probabilité p, 0 sinon) : la fonction renvoie 1 si random() < p, et 0 sinon. En effet, random() tombe dans [0;p[ avec la probabilité p.

Variable à plusieurs valeurs x1,x2,…,xk, de probabilités p1,p2,…,pk : on découpe [0;1[ en intervalles consécutifs de longueurs p1,p2,…,pk. Les seuils du programme sont les probabilités cumulées p1, puis p1+p2, et ainsi de suite.

Avec un tableur. =ALEA() joue le rôle de random() : =ALEA()<p renvoie VRAI avec la probabilité p. =ALEA.ENTRE.BORNES(a;b) joue celui de randint(a, b), bornes comprises. En recopiant la formule sur n lignes, on obtient un échantillon de taille n.

Exemples

Un guichet. Le nombre X de clients qui arrivent à un guichet en une minute vaut 0, 1 ou 2, avec les probabilités 0,3 ; 0,5 ; 0,2. Les seuils cumulés sont 0,3, puis 0,3+0,5=0,8.

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 1 lorsque 0,3⩽u<0,8 : cet intervalle a pour longueur 0,8−0,3=0,5, donc P(X=1)=0,5. Elle renvoie 2 lorsque u∈[0,8;1[, de longueur 0,2 : P(X=2)=0,2.

Avec randint. Une joueuse réussit un penalty avec la probabilité 0,7. randint(1, 10) renvoie l’un des 10 entiers de 1 à 10 ; le test randint(1, 10) <= 7 est vrai pour 7 d’entre eux, donc avec la probabilité 710. La fonction suivante simule un tir (1 = but).

from random import randint

def tir():
    if randint(1, 10) <= 7:
        return 1
    else:
        return 0

Ré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’à 1.

Attention — Les seuils sont cumulés : écrire elif u < 0.5 pour obtenir P(X=1)=0,5 donnerait l’intervalle [0,3;0,5[, de longueur 0,2 seulement. Et randint(1, 10) peut renvoyer 10, alors que range(10) s’arrête à 9.

1 / 5

2

Moyenne d’un échantillon de taille n

Ce qu’il faut savoir

Échantillon de taille n de la loi de X : la liste x1,x2,…,xn des valeurs obtenues en répétant n fois, de façon indépendante, l’expérience qui définit X. Sa moyenne est m=x1+x2+⋯+xnn.

En Python, un accumulateur s additionne les n valeurs simulées ; on divise par n 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 μ=E(X) est un nombre fixe : elle ne dépend que de la loi. La moyenne m, 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 X vaut 1 quand un caractère est présent et 0 sinon, la somme x1+⋯+xn compte les 1 : la moyenne m est la fréquence f=kn du caractère dans l’échantillon (k = nombre de 1).

Distance à l’espérance. On mesure l’écart entre l’échantillon et le modèle par |m−μ|. Les simulations montrent que cet écart devient en général plus petit quand n 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 m d’un échantillon tiré au hasard. L’estimation n’est pas exacte, mais elle est en général d’autant plus fiable que n est grand : c’est ce que mesure l’écart 2σn de la partie suivante.

Exemples

Espérance du guichet. μ=0×0,3+1×0,5+2×0,2 =0,9 client par minute.

Quatre échantillons simulés (une exécution réelle de moyenne(n)) :

n10100100010000
m0,70,950,9220,9007
|m−μ|0,20,050,0220,0007

Aucune moyenne n’est égale à 0,9, mais l’écart se resserre quand la taille augmente.

Une fréquence. Sur un échantillon de 250 abonnés, 79 ont ouvert la lettre d’information. En codant 1 l’ouverture et 0 sinon : m=f=79250=0,316. 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 m (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 x1n. Et un échantillon doit être tiré au hasard : les 250 premiers inscrits d’une liste ne forment pas un échantillon aléatoire.

2 / 5

3

L’écart 2σ/√n

Ce qu’il faut savoir

X a pour espérance μ et pour écart type σ ; m est la moyenne d’un échantillon de taille n de la loi de X.

Constat des simulations (pour n assez grand) : dans environ 95% des échantillons, |m−μ|⩽2σn, c’est-à-dire μ−2σn⩽m⩽μ+2σn. En 1re, ce résultat est observé par simulation ; il n’est pas démontré.

Lire une valeur absolue. Pour d>0 : |m−μ|⩽d ⟺μ−d⩽m⩽μ+d.

Variable de Bernoulli de paramètre p : μ=p et σ=p(1−p).

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 5% 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.

Exemples

Démonstration (valeur absolue). |m−μ|⩽d ⟺−d⩽m−μ⩽d ⟺μ−d⩽m⩽μ+d, en ajoutant μ aux trois membres.

Démonstration (Bernoulli). μ=1×p+0×(1−p)=p. Puis V(X)=p(1−p)2+(1−p)(0−p)2 =p(1−p)[(1−p)+p] =p(1−p), d’où σ=p(1−p).

Une durée de trajet. La durée X (en minutes) d’un trajet en bus a pour espérance μ=12,4 et pour écart type σ=3. Pour des échantillons de n=144 trajets : 2σn =2×312 =0,5. Dans environ 95% des échantillons, m∈[11,9;12,9]. Une moyenne relevée de 13,2 min sort de cet intervalle : un écart aussi grand n’arrive que dans environ 5% des échantillons.

Une fréquence. Un transporteur annonce que 20% de ses colis arrivent en retard. Pour un colis, X vaut 1 s’il est en retard : μ=0,2 et σ=0,2×0,8 =0,16 =0,4. Pour n=400 colis : 2×0,420=0,04, d’où l’intervalle [0,16;0,24]. Sur 400 colis suivis, 104 sont en retard : f=104400=0,26>0,24 : la fréquence sort de l’intervalle. En approfondissement, on met alors en doute l’annonce du transporteur.

Réflexe — Je relève μ, σ et n ; je calcule 2σn ; 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 m. On utilise l’écart type σ, pas la variance σ2. Et « 95% » porte sur les échantillons, pas sur les individus d’un échantillon.

3 / 5

4

Effet de la taille n sur la précision

Ce qu’il faut savoir

Demi-largeur de l’intervalle : d(n)=2σn (sa largeur vaut 2d(n)). Elle dépend de σ et de n, pas de μ, et elle diminue quand n augmente.

Règle des carrés. Pour tout entier k⩾1 : d(k2n)=d(n)k. Multiplier n par 4 divise d par 2 ; multiplier n par 100 divise d par 10. La précision progresse lentement.

Taille minimale (approfondissement, hors programme 2026). Pour une demi-largeur au plus égale à a>0 : 2σn⩽a ⟺n⩾2σa ⟺n⩾(2σa)2, et l’on prend le plus petit entier qui convient.

Exemples

Démonstration de la règle des carrés. Pour k>0, k2n =k2×n =kn, donc d(k2n)=2σkn =1k×2σn =d(n)k.

Une chaîne de production (approfondissement). La masse X (en g) d’un biscuit a pour espérance μ=6,2 et pour écart type σ=1,3. On veut une demi-largeur au plus égale à 0,1 : n⩾2×1,30,1 =26, donc n⩾262=676. Avec n=676, l’intervalle est [6,1;6,3] : une moyenne relevée de 6,34 g en sort, le réglage de la chaîne doit être contrôlé.

Quand la racine n’est pas entière (approfondissement). σ=2,1 et a=0,4 : n⩾4,20,4 =10,5, donc n⩾10,52=110,25. Le plus petit entier qui convient est n=111.

Gagner un facteur 10. Un institut obtient une demi-largeur de 0,03 avec 1000 personnes. Pour 0,003, il lui faudrait 100 fois plus de personnes, soit 100000 : 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 2σn⩽a, j’isole n, j’élève au carré (les deux membres sont positifs et la fonction carré est croissante sur [0;+∞[), puis j’arrondis à l’entier supérieur.

Attention — Diviser la demi-largeur par 2 demande 4 fois plus d’individus, pas 2 fois plus : doubler n ne divise d que par 2≈1,41. Et n⩾110,25 donne n=111, pas 110.

4 / 5

5

Simuler N échantillons : la proportion des cas

Ce qu’il faut savoir

Le programme. On simule N échantillons de taille n ; pour chacun, on calcule sa moyenne m et on teste si |m−μ|⩽2σn ; on renvoie la proportion des échantillons qui passent le test. Pour le guichet (μ=0,9 et, avec la formule de la variance, V(X)=0,49, donc σ=0,7) :

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 n assez grand, la valeur renvoyée est proche de 0,95. Elle change d’une exécution à l’autre : c’est elle-même une fréquence, calculée sur N échantillons, qui se stabilise quand N augmente.

Deux tailles à ne pas confondre. n = taille de chaque échantillon ; N = nombre d’échantillons simulés. Le programme tire N×n valeurs de X en tout.

Exemples

Le test pour n=49. 2σn =2×0,77 =0,2 : le test s’écrit |m−0,9|⩽0,2, c’est-à-dire 0,7⩽m⩽1,1.

Trois exécutions réelles de proportion(1000, 49) ont renvoyé 0,943 ; 0,948 ; 0,955. Les trois valeurs sont proches de 0,95 sans lui être égales : la proportion fluctue, comme toute fréquence.

Lire le résultat. 0,955 signifie : sur 1000 échantillons de 49 minutes, 955 ont une moyenne comprise entre 0,7 et 1,1 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 0,95.

Réflexe — Je traduis le test du programme en écriture mathématique (abs(m - mu) <= e s’écrit |m−μ|⩽2σn), je repère le compteur c, et je lis c / N comme une proportion d’échantillons.

Attention — Une valeur comme 0,943 ou 0,955 ne contredit pas le cours : la proportion fluctue elle aussi. Et inverser les arguments, proportion(49, 1000), simule 49 échantillons de taille 1000 : ce n’est pas la même expérience.

5 / 5

+

Pour aller plus loin

Espérance, variance, écart type. Le calcul de E(X), V(X) et σ(X) à 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 p, l’intervalle [p−1n;p+1n] (avec n⩾25 et 0,2⩽p⩽0,8), 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, 2σn =2p(1−p)n ; comme p(1−p)⩽14, cette demi-largeur est au plus égale à 1n, avec égalité pour p=0,5.

Se verra en Terminale. L’inégalité de Bienaymé-Tchebychev démontre que la probabilité d’un écart |m−μ|⩾2σn est au plus 14, pour toute loi et toute taille n ; la valeur d’environ 95% reste, elle, un constat. Voir le chapitre Loi des grands nombres.

À retenir
  • random() < p est vrai avec la probabilité p ; randint(a, b) renvoie un entier de a à b, bornes comprises ; pour une loi à plusieurs valeurs, les seuils sont les probabilités cumulées.
  • Moyenne d’un échantillon : m=x1+⋯+xnn ; elle fluctue d’un échantillon à l’autre, alors que μ=E(X) est fixe. Une fréquence est une moyenne de 0 et de 1. Quand μ est inconnue, m en est une estimation, en général d’autant meilleure que n est grand.
  • Pour n assez grand, dans environ 95% des échantillons : |m−μ|⩽2σn, soit m∈[μ−2σn;μ+2σn].
  • Variable de Bernoulli de paramètre p : μ=p et σ=p(1−p).
  • n multiplié par k2 : 2σn divisé par k. Taille minimale (approfondissement) : n⩾(2σa)2, arrondi à l’entier supérieur.
  • La proportion simulée des échantillons qui vérifient le test est proche de 0,95 ; 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.

Bloqué sur ce chapitre ?

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