Adloun

Trois piles de suite

Exercice de TD · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 6 — Listes et simulations aléatoires · Le module random et les simulations

Énoncé

On lance une pièce jusqu'à obtenir trois « pile » consécutifs.

  1. Écrire une fonction une_partie() renvoyant le nombre de lancers nécessaires.
  2. Écrire duree_moyenne(N) estimant le nombre moyen de lancers sur N parties.
  3. Estimer cette moyenne, puis comparer à la valeur théorique .

Corrigé

1.

import random

def une_partie():
    lancers = 0
    consecutifs = 0
    while consecutifs < 3:
        lancers = lancers + 1
        if random.randint(0, 1) == 1:      # 1 = pile
            consecutifs = consecutifs + 1
        else:
            consecutifs = 0                # tout est à refaire
    return lancers

Le else est le cœur de l'exercice : un « face » ne fait pas perdre un point, il remet le compteur à zéro. C'est ce qui rend le problème bien plus long qu'on ne l'imagine.

2. et 3.

def duree_moyenne(N):
    total = 0
    for partie in range(N):
        total = total + une_partie()
    return total / N

print(duree_moyenne(100000))   # environ 14.0

On trouve bien une moyenne voisine de , ce qui surprend souvent : on attend spontanément une valeur proche de .

L'intuition fautive consiste à penser qu'il suffit d'attendre le bon paquet de trois. En réalité, chaque échec détruit tout le progrès accompli. La valeur exacte est , et la même formule donne pour piles consécutifs — soit lancers pour six piles de suite.

Une boucle while s'imposait ici : le nombre de lancers est précisément l'inconnue.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.