Estimer π en lançant des fléchettes
Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 6 — Listes et simulations aléatoires · Le module random et les simulations
Énoncé
On tire un point au hasard dans le carré . La probabilité qu'il tombe dans le quart de disque de rayon vaut . En déduire une estimation de , et étudier sa précision selon .
Corrigé
import random
def estime_pi(N):
dedans = 0
for i in range(N):
x = random.random()
y = random.random()
if x*x + y*y <= 1:
dedans = dedans + 1
return 4 * dedans / N
for N in [100, 10000, 1000000]:
print(N, estime_pi(N))
# 100 : 3.08 / 10000 : 3.1428 / 1000000 : 3.14158
Le raisonnement : l'aire du quart de disque vaut et celle du carré ; la proportion de points tombant dedans estime donc ce rapport, et il suffit de multiplier par .
On teste plutôt que : c'est équivalent et cela évite une racine carrée par point.
Sur la précision : un million de tirages ne donnent que ou décimales justes, conformément au déjà rencontré. C'est une très mauvaise façon de calculer — mais la méthode de Monte-Carlo devient irremplaçable en dimension élevée, où les méthodes exactes ne passent plus.
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.