algorithmique et programmation (première) · Chapitre 5 · Exercice de TD
Projet : simulateur de marche aléatoire
Programmation modulaire · Projets modulaires · niveau 3 (difficile)
Énoncé
Projet : simulateur de marche aléatoire. Écrire, en respectant la démarche modulaire :
pas(): renvoie ou avec équiprobabilité ;marche(n): renvoie la liste des positions successives d'une marche de pas partant de ;amplitude(L): l'écart entre la position maximale et minimale atteintes ;etude(N, n): simule marches de pas et renvoie la moyenne des amplitudes.
Corrigé
from random import choice
def pas():
return choice([-1, 1])
def marche(n):
L = [0]
for k in range(n):
L.append(L[-1] + pas())
return L
def amplitude(L):
return max(L) - min(L)
def etude(N, n):
return sum([amplitude(marche(n)) for k in range(N)]) / N
print(etude(2000, 100)) # ~ 15 : l'amplitude croît comme rac(n),
print(etude(2000, 400)) # ~ 31 : n x 4 -> amplitude x 2 !
Quatre briques de quatre lignes ; et l'expérience révèle la loi en des marches aléatoires — la même racine carrée que la fluctuation d'échantillonnage.