Adloun

sciences numériques et technologie (seconde) · Chapitre 6 · Exercice de TD

Trois piles de suite

Listes et simulations aléatoires · Le module random et les simulations · niveau 3 (difficile)

É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.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →