Aller au contenu

L'Établi des Maths Cours

Outils pour apprendre et pratiquer

Seconde · Algorithmique et Programmation · 2S3

Cours et exercices corrigés de seconde : Fluctuation d'échantillonnage, loi des grands nombres et simulation

Échantillon, fréquence observée, fluctuation d'échantillonnage, loi des grands nombres (version vulgarisée), fonctions Python renvoyant un résultat aléatoire et simulation d'expériences répétées.

Objectifs du chapitre

Le cours

1. Échantillon, fréquence et loi des grands nombres

  • Un échantillon de taille nn est obtenu en répétant nn fois, de façon indépendante, une même expérience aléatoire à deux issues (succès de probabilité pp, ou échec).
  • Si kk est le nombre de succès, la fréquence observée est f=knf = \frac{k}{n}.
  • Loi des grands nombres (version vulgarisée) : « lorsque nn est grand, sauf exception, la fréquence observée est proche de la probabilité ».
  • Le choix d'une loi de probabilité (par exemple l'équiprobabilité pour un dé équilibré) est une hypothèse de modèle : elle ne se démontre pas. Pour un phénomène réel (lancer d'une punaise), on peut construire le modèle à partir des fréquences observées sur un grand nombre d'essais.

2. Algorithmique en Python : simulation d'échantillons

En Python, on utilise la bibliothèque random :

import random

def frequence_pile(n):
    nb_pile = 0
    for i in range(n):
        if random.random() < 0.5:
            nb_pile += 1
    return nb_pile / n

3. Fonction renvoyant un nombre aléatoire et loi des grands nombres

  • randint(a, b) (module random) renvoie un entier aléatoire entre aa et bb inclus ; random() renvoie un nombre aléatoire de [0;1[[0 ; 1[.
  • En appelant plusieurs fois une telle fonction, on obtient une série statistique dont on peut calculer la fréquence d'une issue :
from random import randint

def lancer_de():
    return randint(1, 6)

def frequence_six(n):
    nb = 0
    for i in range(n):
        if lancer_de() == 6:
            nb = nb + 1
    return nb / n

for n in [10, 100, 10000]:
    print(n, frequence_six(n))
  • Les résultats changent à chaque exécution. Avec n=10n = 10 la fréquence peut être très éloignée de 16≈0,167\frac{1}{6} \approx 0{,}167 (par exemple 0,30{,}3) ; avec n=10 000n = 10\,000 elle est presque toujours très proche de 0,1670{,}167 : on observe la loi des grands nombres.

4. Pour aller plus loin : fluctuation et critère 1n\frac{1}{\sqrt{n}}

Ce critère n'est pas un attendu du programme de seconde : le programme demande d'observer la fluctuation d'échantillonnage et la loi des grands nombres par simulation (voir les paragraphes 1 et 3).
Soit pp la proportion d'un caractère dans une population générale. Lorsqu'on prélève au hasard un échantillon de taille nn (avec nn assez grand ; à titre indicatif n≥25n \ge 25 et 0,2≤p≤0,80{,}2 \le p \le 0{,}8) :

  • La fréquence observée ff varie d'un échantillon à un autre : c'est la fluctuation d'échantillonnage.
  • L'intervalle de fluctuation à 95% est :

I=[p−1n;p+1n]I = \left[p - \frac{1}{\sqrt{n}} ; p + \frac{1}{\sqrt{n}}\right]
Pour nn assez grand, dans environ 95 % (au moins) des échantillons de taille nn, la fréquence observée ff appartient à cet intervalle.

5. Pour aller plus loin : écart entre fréquence et probabilité

Dire que f∈[p−1n;p+1n]f \in \left[p - \frac{1}{\sqrt{n}} ; p + \frac{1}{\sqrt{n}}\right] équivaut à dire que la distance entre ff et pp vérifie :
∣f−p∣≤1n|f - p| \le \frac{1}{\sqrt{n}}
Résultat admis : pour nn assez grand, cette inégalité est vérifiée pour environ 95 %95\,\% (ou plus) des échantillons de taille nn.

  • Plus nn est grand, plus l'intervalle est étroit : la fréquence fluctue moins.

6. Pour aller plus loin : simuler de nombreux échantillons en Python

from random import random
from math import sqrt

def frequence(n, p):
    k = 0
    for i in range(n):
        if random() < p:
            k = k + 1
    return k / n

def proportion_proches(N, n, p):
    c = 0
    for j in range(N):
        if abs(frequence(n, p) - p) <= 1 / sqrt(n):
            c = c + 1
    return c / N

random() renvoie un nombre aléatoire de [0;1[[0 ; 1[ : la condition random() < p est réalisée avec la probabilité pp. L'appel proportion_proches(1000, 100, 0.3) renvoie en général une valeur proche de 0,950{,}95 ou au-dessus.

Méthodes et exemples rédigés

Méthode : Simuler une expérience aléatoire avec une fonction Python

Exemple

On lance deux dés équilibrés et on s'intéresse à la somme. Écrire une fonction qui simule un lancer, puis une fonction qui estime la fréquence de la somme 77 sur nn lancers.

  1. Étape 1 (Une expérience) : def somme_deux_des(): return randint(1, 6) + randint(1, 6) (après from random import randint).

  2. Étape 2 (Répétition) :

    def frequence_sept(n):
        c = 0
        for i in range(n):
            if somme_deux_des() == 7:
                c = c + 1
        return c / n
    
  3. Étape 3 (Comparaison au modèle) : la probabilité théorique vaut 636=16≈0,167\frac{6}{36} = \frac{1}{6} \approx 0{,}167 (tableau à double entrée). Pour n=10 000n = 10\,000, la fréquence obtenue est en général très proche de 0,1670{,}167.

  4. Conclusion : la simulation ne démontre rien, mais elle permet de confronter le modèle (dés équilibrés) aux fréquences observées, conformément à la loi des grands nombres.

Pour aller plus loin — Méthode : Prendre une décision à l'aide d'un échantillon

Exemple

Une pièce est lancée 100100 fois et tombe 6262 fois sur pile. Peut-on considérer, au seuil de 95 %95\,\%, que la pièce est équilibrée ?

  1. Étape 1 (Proportion théorique) : pour une pièce équilibrée, p=0,5p = 0{,}5 (compris entre 0,20{,}2 et 0,80{,}8) et n=100≥25n = 100 \ge 25 : le critère s'applique.

  2. Étape 2 (Intervalle) : 1100=0,1\frac{1}{\sqrt{100}} = 0{,}1, donc I=[0,5−0,1;0,5+0,1]=[0,4;0,6]I = [0{,}5 - 0{,}1 ; 0{,}5 + 0{,}1] = [0{,}4 ; 0{,}6].

  3. Étape 3 (Fréquence observée) : f=62100=0,62f = \frac{62}{100} = 0{,}62 et 0,62∉[0,4;0,6]0{,}62 \notin [0{,}4 ; 0{,}6].

  4. Conclusion : on rejette l'hypothèse « la pièce est équilibrée », avec un risque d'erreur d'environ 5 %5\,\%. (Avec 5555 piles, f=0,55∈If = 0{,}55 \in I : on ne pourrait pas rejeter l'hypothèse.)

Pour aller plus loin — Méthode : Vérifier la conformité d'un échantillon

Exemple

Un fabricant affirme que 90 %90\,\% de ses ampoules fonctionnent plus de 1000 heures. Sur un échantillon de 400400 ampoules, 348348 dépassent 1000 heures. Ce résultat remet-il en cause l'affirmation ?

  1. Étape 1 (Données) : p=0,9p = 0{,}9 et n=400n = 400. On a 1400=120=0,05\frac{1}{\sqrt{400}} = \frac{1}{20} = 0{,}05.

  2. Étape 2 (Intervalle) : I=[0,9−0,05;0,9+0,05]=[0,85;0,95]I = [0{,}9 - 0{,}05 ; 0{,}9 + 0{,}05] = [0{,}85 ; 0{,}95].

  3. Étape 3 (Fréquence observée) : f=348400=0,87f = \frac{348}{400} = 0{,}87, et 0,87∈[0,85;0,95]0{,}87 \in [0{,}85 ; 0{,}95].

  4. Conclusion : la fréquence observée est compatible avec p=0,9p = 0{,}9 : l'échantillon ne permet pas de remettre en cause l'affirmation du fabricant.

Pour aller plus loin — Méthode : Déterminer une taille d'échantillon

Exemple

Quelle taille minimale nn doit avoir un échantillon pour que l'intervalle [p−1n;p+1n]\left[p - \frac{1}{\sqrt{n}} ; p + \frac{1}{\sqrt{n}}\right] ait une amplitude inférieure ou égale à 0,040{,}04 ?

  1. Étape 1 : L'amplitude de l'intervalle vaut 2n\frac{2}{\sqrt{n}}. On veut 2n≤0,04\frac{2}{\sqrt{n}} \le 0{,}04.

  2. Étape 2 : Comme n>0\sqrt{n} > 0, cela équivaut à n≥20,04=50\sqrt{n} \ge \frac{2}{0{,}04} = 50.

  3. Étape 3 : La fonction carré est croissante sur [0;+∞[[0 ; +\infty[, donc n≥502=2500n \ge 50^2 = 2500.

  4. Conclusion : il faut un échantillon d'au moins 25002500 individus.

Pièges fréquents

Questions de révision

Essaie de répondre de tête avant d'afficher la réponse.

(Pour aller plus loin) Quelle est la formule approchée de l'intervalle de fluctuation à 95% pour un échantillon de taille nn et de proportion pp ?

[p−1n;p+1n]\left[p - \frac{1}{\sqrt{n}} ; p + \frac{1}{\sqrt{n}}\right].

(Pour aller plus loin) Si on multiplie la taille d'un échantillon par 4, par combien est divisée la largeur de l'intervalle de fluctuation ?

Par 4=2\sqrt{4} = 2 (elle est divisée par 2).

Pour n=400n = 400 et p=0,3p = 0{,}3, donner l'intervalle [p−1n;p+1n]\left[p - \frac{1}{\sqrt{n}} ; p + \frac{1}{\sqrt{n}}\right].

1400=0,05\frac{1}{\sqrt{400}} = 0{,}05, d'où [0,25;0,35][0{,}25 ; 0{,}35].

Que renvoie l'instruction Python random() du module random ?

Un nombre décimal aléatoire de l'intervalle [0;1[[0 ; 1[.

Quelle taille minimale d'échantillon donne un intervalle d'amplitude au plus 0,10{,}1 ?

2n≤0,1  ⟺  n≥20  ⟺  n≥400\frac{2}{\sqrt{n}} \le 0{,}1 \iff \sqrt{n} \ge 20 \iff n \ge 400.

Énoncer la loi des grands nombres (version vulgarisée).

Lorsque nn est grand, sauf exception, la fréquence observée est proche de la probabilité.

Que renvoie randint(1, 6) ?

Un entier aléatoire entre 11 et 66, bornes incluses (simulation d'un dé équilibré).

Exercices corrigés

Exercice 1 Loi des grands nombres

Palier 1 · découverte

On simule 10 00010\,000 lancers d'un dé équilibré et on calcule la fréquence d'apparition du 66. De quelle valeur cette fréquence est-elle très probablement proche ?

  1. 0,1670{,}167
  2. 0,60{,}6
  3. 0,50{,}5
  4. 0,060{,}06
Un indice

Pour un grand nombre de lancers, la fréquence observée est, sauf exception, proche de la probabilité.

Voir la correction

Bonne réponse : A. 0,1670{,}167

D'après la loi des grands nombres (version vulgarisée), pour n=10 000n = 10\,000 la fréquence observée est très probablement proche de P(6)=16≈0,167P(6) = \frac{1}{6} \approx 0{,}167.

Exercice 2 Simuler une pièce en Python

Palier 2 · application

Avec from random import randint, quelle instruction simule le lancer d'une pièce équilibrée, en codant Pile par 11 et Face par 00 ?

  1. randint(0, 1)
  2. randint(0, 2)
  3. randint(1, 2) / 2
  4. range(0, 1)
Un indice

randint(a, b) renvoie un entier aléatoire entre aa et bb, les deux bornes étant incluses.

Voir la correction

Bonne réponse : A. randint(0, 1)

randint(0, 1) renvoie 00 ou 11 avec la même probabilité 12\frac{1}{2}. randint(0, 2) a trois issues, randint(1, 2) / 2 renvoie 0,50{,}5 ou 11, et range(0, 1) n'est pas un nombre aléatoire.

Exercice 3 Lire une fonction de simulation

Palier 3 · approfondissement

On considère la fonction Python suivante (random() renvoie un nombre aléatoire de [0;1[[0 ; 1[) :

from random import random

def experience():
    if random() < 0.3:
        return 1
    return 0

Quelle est la probabilité que experience() renvoie 11 ?

  1. 0,30{,}3
  2. 0,70{,}7
  3. 0,50{,}5
  4. 11
Un indice

La fonction renvoie 11 exactement lorsque le nombre aléatoire tiré est strictement inférieur au seuil écrit dans le test.

Voir la correction

Bonne réponse : A. 0,30{,}3

random() < 0.3 est vrai avec la probabilité 0,30{,}3 (longueur de [0;0,3[[0 ; 0{,}3[) : la fonction renvoie 11 avec la probabilité 0,30{,}3 et 00 avec la probabilité 0,70{,}7.

Exercice 4 Construire un modèle à partir de fréquences

Palier 4 · défi

On lance 5 0005\,000 fois une punaise : elle tombe 3 1003\,100 fois sur la pointe. Quelle probabilité est-il raisonnable de choisir, dans le modèle, pour l'événement « la punaise tombe sur la pointe » ?

  1. 0,620{,}62
  2. 0,50{,}5
  3. 0,310{,}31
  4. 3 1003\,100
Un indice

Pour un phénomène réel, on peut construire le modèle à partir de la fréquence observée sur un grand nombre d'essais.

Voir la correction

Bonne réponse : A. 0,620{,}62

La fréquence observée vaut 3 1005 000=0,62\frac{3\,100}{5\,000} = 0{,}62. Le nombre d'essais étant grand, on choisit le modèle P(pointe)=0,62P(\text{pointe}) = 0{,}62. Rien ne justifie l'équiprobabilité (0,50{,}5) ; ce choix reste une hypothèse de modèle.