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.
- Écrire une fonction
une_partie()renvoyant le nombre de lancers nécessaires. - Écrire
duree_moyenne(N)estimant le nombre moyen de lancers surNparties. - 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.