Reproduire un tirage aléatoire
Exercice supplémentaire · niveau 2 · sciences numériques et technologie (seconde), chapitre 6 — Listes et simulations aléatoires · Le module random et les simulations
Énoncé
La fonction random.seed(n) fixe le point de départ du générateur. Exécuter deux fois le même programme avec random.seed(42) et constater. À quoi cela sert-il ?
Corrigé
import random
random.seed(42)
print([random.randint(1, 6) for i in range(5)]) # [6, 1, 1, 6, 3]
random.seed(42)
print([random.randint(1, 6) for i in range(5)]) # [6, 1, 1, 6, 3] — identique
Les nombres dits « aléatoires » sont en réalité pseudo-aléatoires : ils sont calculés par une suite déterministe, dont seed fixe le premier terme. Même graine, même série.
Deux usages, et ils comptent. Pour déboguer : quand une simulation échoue une fois sur mille, fixer la graine permet de reproduire exactement le cas fautif au lieu de le traquer au hasard. Pour publier : un résultat scientifique obtenu par simulation doit pouvoir être refait à l'identique par un tiers, et l'on communique alors la graine.
En revanche, cela disqualifie ces générateurs pour la cryptographie : qui connaît la graine prédit toute la suite. On utilise là le module secrets.
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.