Échantillonnage Exercices

Lire une fonction Python de simulation

Durée estimée
10 minutes
Difficulté
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Objectif travaillé

Une roue de loterie est partagée en secteurs : la probabilité de tomber sur un secteur gagnant est $p = 0{,}2$. On souhaite étudier la fréquence de gains observée sur un échantillon de $n$ parties.
Pour simuler ces parties, on utilise la fonction randint du module random : randint(a, b) renvoie un entier aléatoire compris (au sens large) entre $a$ et $b$. On dispose de la fonction suivante.

from random import randint

def frequence_gains(n):
    succes = 0
    for i in range(n):
        if randint(1, 5) == 1:
            succes = succes + 1
    return succes / n
  1. Expliquer le rôle de la variable succes et celui de la boucle for.
  2. À chaque tour de boucle, la condition randint(1, 5) == 1 est testée.

    1. Combien de valeurs différentes randint(1, 5) peut-il renvoyer ?
    2. Quelle est la probabilité que la condition soit vraie ? Expliquer pourquoi cette modélisation est cohérente avec l'énoncé.
  3. Que représente la valeur renvoyée par frequence_gains(n) ?
  4. On exécute l'instruction print(frequence_gains(10)) et l'on obtient $0.3$. Combien de parties gagnantes ont été simulées lors de cet appel ?
  5. On exécute deux fois de suite print(frequence_gains(1000)). On obtient $0.196$ puis $0.213$. Comment expliquer que les deux résultats soient différents ? De quelle valeur ces résultats sont-ils proches, et pourquoi ?

Corrigé

  1. La variable succes est un compteur : initialisée à $0$, elle augmente de $1$ chaque fois qu'une partie est gagnée. La boucle for i in range(n) répète l'expérience $n$ fois, ce qui simule un échantillon de $n$ parties.
    1. randint(1, 5) renvoie un entier au hasard parmi $1, 2, 3, 4, 5$, soit $5$ valeurs possibles.
    2. Une seule de ces cinq valeurs ($1$) rend la condition vraie, et les cinq valeurs ont la même chance d'apparaître. La probabilité que la condition soit vraie est donc $\dfrac{1}{5}$ = $\mathbf{0{,}2}$. Cette probabilité est égale à $p = 0{,}2$ : choisir « obtenir $1$ parmi $1$ à $5$ » modélise bien un secteur gagnant de probabilité $0{,}2$.
  2. À la fin de la boucle, succes contient le nombre de parties gagnées sur les $n$ simulées. L'instruction return succes / n renvoie donc la fréquence de gains observée sur l'échantillon de taille $n$.
  3. La fréquence renvoyée est $0{,}3 = \dfrac{k}{10}$, où $k$ est le nombre de parties gagnantes. On a $k = 0{,}3 \times 10$, soit $3$ parties gagnantes.
  4. Les deux appels reposent sur le hasard : d'un échantillon à l'autre, le nombre de gains change, donc la fréquence aussi. C'est la fluctuation d'échantillonnage. Comme la taille $n = 1\,000$ est grande, les deux fréquences restent proches de la probabilité $p = 0{,}2$, conformément à la loi des grands nombres.

Pour réviser : Simuler des échantillons en Python