1ʳᵉ spé · Chapitre 11 · Probabilités et statistiques

Exercices — Échantillonnage et simulation

14 exercices de difficulté croissante, à chercher avant de regarder le corrigé.

14 exercices, difficulté croissante de ★ (application directe) à ★★★★ (défi). Les corrigés détaillés sont dans le PDF — cherchez d'abord, le corrigé ensuite : c'est là que ça progresse.

Exercice 1 ★★★Lire des instructions de simulation

Simuler une expérience ou une variable aléatoire en Python

Dans tout l'exercice, on a exécuté l'import suivant :

from random import random, randint, choice
  1. Pour chaque instruction, indiquer toutes les valeurs possibles du résultat.

    a. randint(1, 6)

    b. random()

    c. randint(0, 1)

    d. choice(["P", "F"])

    e. 2 * randint(1, 6)

    f. randint(1, 6) + randint(1, 6)

  2. Pour chaque instruction, dire quelle expérience aléatoire elle simule, et préciser la loi de probabilité correspondante.

    a. random() < 0.3

    b. random() < 0.5

    c. choice([0, 1, 1, 1])

    d. choice([1, 1, 1, 1, 5, 5])

  3. Parmi les deux instructions randint(0, 1) et random() < 0.5, expliquer pourquoi les deux peuvent simuler le lancer d'une pièce équilibrée, et ce qui les distingue (type du résultat renvoyé).

Exercice 2 ★★★Générer et parcourir des listes

Listes Python : générer, parcourir, calculer

  1. Donner la liste construite par chaque instruction (sans exécuter Python : raisonner à la main).

    a. [2*k for k in range(5)]

    b. [k**2 for k in range(1, 5)]

    c. [7 for k in range(4)]

    d. [k + 1 for k in range(3)]

    e. list(range(3, 8))

    f. [10 - k for k in range(5)]

  2. On considère le programme suivant :

    L = []
    for k in range(6):
        L.append(3 * k)
    

    a. Donner la liste L obtenue à la fin de l'exécution.

    b. Écrire une instruction en compréhension qui construit la même liste en une seule ligne.

  3. On pose L = [4, 8, 15, 16, 23, 42]. Donner la valeur de chaque expression.

    a. L[0]

    b. L[3]

    c. L[5]

    d. len(L)

    e. sum(L)

    f. sum(L) / len(L)

  4. Écrire une fonction total(L) qui calcule la somme des éléments d'une liste L sans utiliser sum, à l'aide d'une boucle for et d'une variable de somme cumulée.

Exercice 3 ★★★Simuler une pièce et un dé

Simuler une expérience ou une variable aléatoire en PythonListes Python : générer, parcourir, calculer

Dans tout l'exercice, on dispose de l'import :

from random import random, randint

On code un résultat « pile » par 1 et un résultat « face » par 0.

  1. Pièce équilibrée. Compléter la fonction suivante pour qu'elle simule le lancer d'une pièce équilibrée : elle doit renvoyer 1 avec probabilité 0,5 et 0 sinon.

    def piece():
        if random() < ...:
            return 1
        else:
            return 0
    
  2. Pièce truquée. Écrire une fonction piece_truquee(p) qui simule le lancer d'une pièce donnant « pile » avec probabilité p (où 0<p<1) : elle renvoie 1 avec probabilité p et 0 sinon.

  3. Dé équilibré. Écrire une fonction de() qui simule le lancer d'un dé équilibré à six faces, numérotées de 1 à 6.

  4. Série de lancers. Compléter la fonction suivante pour qu'elle renvoie la liste des résultats de n lancers d'un dé équilibré.

    def lancers(n):
        L = []
        for k in range(...):
            L.append(...)
        return L
    
  5. Que renvoie l'appel lancers(0) ? Ce résultat vous semble-t-il cohérent ?

Exercice 4 ★★★★Une première moyenne d'échantillon

Échantillon de taille n et moyenne d'échantillon

On lance 10 fois un dé équilibré à six faces et on note les résultats obtenus :

2  ;  5  ;  3  ;  6  ;  1  ;  4  ;  4  ;  5  ;  3  ;  4

Cette série constitue un échantillon de taille 10 de la variable aléatoire X égale au résultat du dé.

  1. Rappeler la valeur de l'espérance μ=E(X) pour un dé équilibré.

  2. Calculer à la main la moyenne m de cet échantillon.

  3. Comparer m et μ. Était-il prévisible que m ne soit pas exactement égale à μ ? Justifier.

  4. On veut automatiser ce calcul. Compléter la fonction suivante, qui simule un échantillon de taille n de lancers d'un dé équilibré et renvoie sa moyenne, en utilisant une somme cumulée :

    from random import randint
    
    def moyenne_echantillon(n):
        s = 0
        for k in range(n):
            s = s + ...
        return s / ...
    
  5. Proposer une autre version de moyenne_echantillon(n) qui construit d'abord la liste des n résultats, puis utilise sum et len.

Exercice 5 ★★★★Simuler une variable aléatoire de loi donnée

Simuler une expérience ou une variable aléatoire en PythonListes Python : générer, parcourir, calculer

Un stand de fête foraine propose le jeu suivant : à chaque partie, le joueur gagne un lot dont la valeur, en euros, est une variable aléatoire X de loi :

xi 0 1 5
P(X=xi) 0,5 0,3 0,2

On dispose de l'import :

from random import random, choice
  1. Calculer l'espérance E(X).

  2. Compléter la fonction suivante pour qu'elle simule la variable X à l'aide de random() et de tests en cascade :

    def simule_X():
        r = random()
        if r < ...:
            return 0
        elif r < ...:
            return 1
        else:
            return ...
    

    Expliquer pourquoi la condition du elif doit être r < 0.8 et non r < 0.3.

  3. On veut maintenant simuler X avec choice, qui choisit un élément au hasard, de façon équiprobable, dans une liste. Construire une liste L de 10 nombres telle que choice(L) suive exactement la loi de X. Justifier.

  4. Écrire une fonction echantillon(n) qui renvoie une liste de n valeurs simulées de X (on pourra utiliser simule_X).

Exercice 6 ★★★★Estimer une espérance par simulation

Estimation de l'espérance par une moyenne observéeÉchantillon de taille n et moyenne d'échantillon

Une association organise une tombola. Chaque ticket coûte 2 euros et rapporte un gain brut (avant déduction du prix du ticket) modélisé par une variable aléatoire G de loi :

gi 0 2 10
P(G=gi) 0,7 0,2 0,1
  1. Calculer l'espérance μ=E(G).

  2. On a écrit le programme suivant, où la fonction simule_G() simule correctement la variable G :

    def moyenne(n):
        L = [simule_G() for k in range(n)]
        return sum(L) / len(L)
    
    for n in [100, 1000, 10000]:
        print(n, moyenne(n))
    

    Une exécution a affiché :

    100 1.28
    1000 1.442
    10000 1.4032
    

    a. Que représente chacune des trois valeurs affichées ?

    b. De quelle valeur ces moyennes semblent-elles se rapprocher quand n augmente ? Est-ce cohérent avec la question 1 ?

    c. Énoncer le principe général qui permet d'estimer l'espérance d'une variable aléatoire à l'aide d'une simulation.

  3. Si on relance le programme, obtiendra-t-on exactement les mêmes trois valeurs ? Justifier.

  4. Un ticket coûte 2 euros. En utilisant la valeur de μ, dire si ce jeu est favorable au joueur, défavorable, ou équitable. Interpréter concrètement pour un joueur qui achèterait un grand nombre de tickets.

Exercice 7 ★★★★Deux échantillons, deux moyennes

Fluctuation d'échantillonnageÉchantillon de taille n et moyenne d'échantillon

Deux élèves, Lina et Malo, lancent chacun 20 fois le même dé équilibré à six faces et notent leurs résultats.

Échantillon de Lina :

1  ;  4  ;  6  ;  2  ;  3  ;  5  ;  4  ;  6  ;  1  ;  3  ;  2  ;  5  ;  4  ;  3  ;  6  ;  2  ;  4  ;  1  ;  1  ;  3

Échantillon de Malo :

6  ;  3  ;  5  ;  2  ;  4  ;  6  ;  1  ;  5  ;  3  ;  4  ;  2  ;  6  ;  5  ;  4  ;  3  ;  5  ;  2  ;  4  ;  4  ;  1

On note X la variable aléatoire égale au résultat d'un lancer, et μ=E(X)=3,5.

  1. Calculer la moyenne m1 de l'échantillon de Lina et la moyenne m2 de l'échantillon de Malo.

  2. Comparer m1, m2 et μ. Que constate-t-on ?

  3. Malo affirme : « Nos deux moyennes sont différentes, donc l'un de nous deux s'est trompé, ou bien le dé est truqué. » Que lui répondre ? Comment s'appelle le phénomène observé ?

  4. Lina dit : « Ma moyenne m1 est plus loin de 3,5 que celle de Malo, donc mon dé était moins équilibré pendant mes lancers. » Cet argument est-il valable ?

  5. Question de réflexion. Que faudrait-il modifier dans l'expérience pour que la moyenne observée soit « presque sûrement » très proche de μ ? Expliquer en s'appuyant sur ce que dit le cours à propos de la taille de l'échantillon.

Exercice 8 ★★★★La dispersion diminue quand la taille augmente

Fluctuation d'échantillonnage

On lance un dé équilibré à six faces. La variable aléatoire X égale au résultat du lancer a pour espérance μ=3,5 (trait pointillé sur la figure).

À l'aide d'un programme Python, on a simulé 20 échantillons de taille n=10, puis 20 échantillons de taille n=100, puis 20 échantillons de taille n=1000. Chaque point de la figure représente la moyenne d'un de ces échantillons.

Moyennes de 20 échantillons d'un dé équilibré pour n = 10, n = 100 et n = 1000

  1. Pour chacune des trois tailles n=10, n=100 et n=1000, décrire en une phrase la dispersion des 20 moyennes autour de μ=3,5, puis donner un encadrement approximatif des moyennes lues sur la figure.

  2. Comment évolue la fluctuation des moyennes d'échantillons lorsque la taille n augmente ? Formuler une conclusion en une ou deux phrases, en précisant ce que cela signifie pour l'estimation de μ par la moyenne observée.

  3. Question de réflexion. Pour estimer μ, on hésite entre deux protocoles : lancer le dé 1000 fois et calculer la moyenne de cet unique échantillon, ou bien constituer 100 échantillons de taille 10 et regarder leurs 100 moyennes. Qu'en pensez-vous ?

Exercice 9 ★★★Programmer la proportion des écarts

L'écart 2 sigma sur racine de n et la règle des 95 %Listes Python : générer, parcourir, calculerSimuler une expérience ou une variable aléatoire en Python

On lance un dé équilibré à six faces. La variable aléatoire X égale au résultat a pour espérance μ=3,5 et pour écart type σ=35121,708 (valeur donnée, elle a été calculée au chapitre précédent).

On veut vérifier expérimentalement le constat du cours : pour des échantillons de taille n, environ 95 % des moyennes m vérifient m3,52σn.

Le script suivant, dans lequel trois lignes sont à compléter, simule N échantillons de taille n et renvoie la proportion des moyennes situées dans cette zone :

from random import randint

def proportion_ecarts(N, n):
    sigma = 1.708
    rayon = 2 * sigma / n**0.5
    moyennes = []
    for k in range(N):
        echantillon = [randint(1, 6) for i in range(n)]
        m = ...                    # moyenne de l'echantillon
        moyennes.append(m)
    compteur = 0
    for m in moyennes:
        if ... :                   # la moyenne est dans la zone
            compteur = compteur + 1
    return ...                     # proportion cherchee
  1. Compléter les trois lignes du script.

  2. Expliquer en une phrase le rôle de chacune des lignes suivantes :

    a. rayon = 2 * sigma / n**0.5

    b. echantillon = [randint(1, 6) for i in range(n)]

    c. moyennes.append(m)

  3. On exécute proportion_ecarts(1000, 50). Quelle valeur approximative attend-on pour le résultat renvoyé ?

  4. On exécute maintenant proportion_ecarts(1000, 200). La proportion renvoyée change-t-elle beaucoup ? Et la largeur de la zone [3,52σn ; 3,5+2σn] ? Justifier par un calcul.

Exercice 10 ★★★Ce dé est-il équilibré ?

Estimation de l'espérance par une moyenne observéeL'écart 2 sigma sur racine de n et la règle des 95 %

Dans un club de jeux de société, un joueur trouve qu'un des dés à six faces donne « trop souvent des grands nombres ». Pour en avoir le cœur net, on lance ce dé n=400 fois et on note les résultats. La moyenne observée sur cet échantillon est m=3,74.

  1. On suppose dans cette question que le dé est équilibré, et on note X le résultat d'un lancer.

    a. Donner la loi de probabilité de X dans un tableau, puis vérifier que μ=E(X)=3,5.

    b. On admet que l'écart type de X vaut σ=35121,708. Calculer 2σ400, arrondi au millième.

  2. Toujours pour un dé équilibré, dans quelle zone se situent environ 95 % des moyennes d'échantillons de taille 400 ? Donner l'encadrement correspondant de m.

  3. La moyenne observée m=3,74 appartient-elle à cette zone ?

  4. Que peut-on raisonnablement conclure au sujet de ce dé ? Rédiger une réponse prudente : ce constat prouve-t-il que le dé est truqué ?

Exercice 11 ★★★Vrai ou faux : moyennes et échantillons

Fluctuation d'échantillonnageEstimation de l'espérance par une moyenne observéeL'écart 2 sigma sur racine de n et la règle des 95 %

Dans tout l'exercice, X est une variable aléatoire d'espérance μ et d'écart type σ. Pour chacune des affirmations suivantes, dire si elle est vraie ou fausse, puis justifier par une phrase ou un contre-exemple.

  1. Deux échantillons de même taille d'une même variable aléatoire ont toujours la même moyenne.

  2. Si la taille n de l'échantillon est très grande, alors la moyenne de l'échantillon est égale à μ.

  3. Pour des échantillons de taille n, environ 95 % des moyennes m s'écartent de μ d'au plus 2σn.

  4. Pour diviser 2σn par 2, il suffit de doubler la taille n de l'échantillon.

  5. La moyenne d'un échantillon de taille 10000 est toujours comprise entre μ2σ10000 et μ+2σ10000.

  6. Si l'on simule N=1000 échantillons de taille n=100 puis N=1000 échantillons de taille n=400, la proportion des moyennes vérifiant mμ2σn est environ deux fois plus grande dans le second cas.

Exercice 12 ★★★Une loterie au microscope

L'écart 2 sigma sur racine de n et la règle des 95 %Échantillon de taille n et moyenne d'échantillonEstimation de l'espérance par une moyenne observée

Une association vend des tickets de loterie. Le gain X (en euros) d'un ticket suit la loi de probabilité suivante :

xi (en €) 0 2 10
P(X=xi) 0,7 0,25 0,05
  1. a. Calculer l'espérance μ=E(X). Interpréter ce résultat pour un acheteur de tickets.

    b. Calculer E(X2), en déduire la variance V(X)=E(X2)μ2 puis l'écart type σ(X), arrondi au centième.

  2. On a simulé en Python N=500 échantillons de n=25 tickets chacun, et calculé la moyenne des gains de chaque échantillon. L'histogramme de ces 500 moyennes est représenté ci-dessous (le trait vertical indique μ).

    Histogramme des moyennes de 500 échantillons de 25 tickets

    Décrire l'histogramme en une ou deux phrases : autour de quelle valeur les moyennes se concentrent-elles ? Toutes les moyennes sont-elles proches de cette valeur ?

  3. Calculer 2σ25, puis donner l'encadrement de la moyenne m vérifié par environ 95 % des échantillons de 25 tickets.

  4. Un client a acheté 25 tickets et a obtenu un gain moyen de 2,10 € par ticket. Commenter ce résultat à l'aide de la question précédente.

Exercice 13 ★★★★Contrôle qualité dans une usine

Estimation de l'espérance par une moyenne observéeL'écart 2 sigma sur racine de n et la règle des 95 %Simuler une expérience ou une variable aléatoire en Python

Dans une usine agroalimentaire, une machine remplit des paquets de farine. La masse d'un paquet (en grammes) est une variable aléatoire dont l'espérance annoncée par le fabricant est μ=500 g et dont l'écart type est σ=8 g (valeurs admises).

Chaque heure, un contrôleur prélève un échantillon de n=64 paquets et calcule leur masse moyenne m.

  1. a. Calculer 2σ64.

    b. En déduire la zone dans laquelle se situent environ 95 % des moyennes d'échantillons de 64 paquets, si la machine est bien réglée.

  2. À 14 h, le contrôleur mesure une moyenne m=497,2 g. Que peut-il conclure ? Rédiger une réponse prudente.

  3. Le contrôleur veut automatiser ce test. Écrire une fonction Python alerte(masses) qui prend en paramètre la liste des masses des paquets d'un échantillon et renvoie True si la moyenne de l'échantillon sort de la zone [498 ; 502], et False sinon.

  4. Question de réflexion. Pour gagner du temps, un stagiaire propose de ne peser que n=16 paquets par échantillon. Calculer 2σ16 et expliquer pourquoi le contrôle avec n=64 est préférable.

Exercice 14 ★★★★Écrire la simulation de A à Z

Simuler une expérience ou une variable aléatoire en PythonListes Python : générer, parcourir, calculerÉchantillon de taille n et moyenne d'échantillonL'écart 2 sigma sur racine de n et la règle des 95 %

On lance deux dés équilibrés à six faces et on note X la somme des deux résultats. Dans cet exercice, on écrit soi-même toute la simulation, sans script fourni. On admet que l'écart type de X vaut σ2,415.

  1. Justifier que μ=E(X)=7. On pourra utiliser le fait (admis) que l'espérance de la somme des deux dés est la somme de leurs espérances.

  2. Écrire une fonction Python deux_des() qui simule une réalisation de X, c'est-à-dire qui renvoie la somme de deux lancers d'un dé équilibré. On utilisera from random import randint.

  3. Écrire une fonction moyenne_echantillon(n) qui simule un échantillon de taille n de X et renvoie sa moyenne.

  4. Écrire une fonction proportion(N, n) qui simule N échantillons de taille n, calcule leurs moyennes, et renvoie la proportion des moyennes appartenant à la zone [μ2σn ; μ+2σn]. Vérifier par un calcul que pour n=100, cette zone est environ [6,52 ; 7,48].

  5. Quelle valeur approximative attend-on pour proportion(1000, 100) ? Justifier en une phrase.

Bloqué sur « Échantillonnage et simulation » ?

On peut le travailler ensemble dès cette semaine. La première heure est offerte — on fait le point honnêtement, et vous repartez au minimum avec une méthode.