Le problème du chevalier de Méré
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é
Au XVII\textsuperscript{e} siècle, on pensait que ces deux jeux étaient également favorables : obtenir au moins un en lançant un dé fois, ou obtenir au moins un double en lançant deux dés fois.
- Écrire une fonction
jeu_A(N)estimant la probabilité du premier événement surNparties. - Écrire
jeu_B(N)pour le second. - Comparer pour et conclure.
Corrigé
1. et 2.
import random
def jeu_A(N):
succes = 0
for partie in range(N):
gagne = False
for lancer in range(4):
if random.randint(1, 6) == 6:
gagne = True
if gagne:
succes = succes + 1
return succes / N
def jeu_B(N):
succes = 0
for partie in range(N):
gagne = False
for lancer in range(24):
if random.randint(1, 6) == 6 and random.randint(1, 6) == 6:
gagne = True
if gagne:
succes = succes + 1
return succes / N
print(jeu_A(100000)) # environ 0.518
print(jeu_B(100000)) # environ 0.491
3. Les deux jeux ne sont pas équivalents : le premier est légèrement favorable, le second légèrement défavorable. L'écart, de l'ordre de , est petit mais bien réel — et c'est en perdant de l'argent que le chevalier de Méré s'en aperçut, avant de soumettre le problème à Pascal.
Les valeurs exactes confirment la simulation : et .
Deux remarques de programmation. La variable gagne doit être remise à False à chaque partie ; la déclarer avant la boucle externe rendrait toutes les parties gagnantes dès la première réussite. Et n'est pas un luxe : avec , la fluctuation dépasse l'écart que l'on cherche à mettre en évidence, et l'on ne peut rien conclure.
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.