Adloun

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.