Comment un ordinateur, machine parfaitement déterministe, peut-il produire du hasard ?
Un générateur congruentiel calcule xₙ₊₁ = reste de (a xₙ + c) par m. Avec a = 5, c = 3, m = 16, la suite parcourt les 16 valeurs avant de se répéter ; avec a = 4, c = 1, elle reste bloquée sur 5. C'est une suite récurrente, donc prévisible : du hasard « apparent », choisi avec soin.
Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 9,5 min.
Pourquoi cette question : un modèle d'introduction
Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.
En NSI, j'utilise sans cesse la fonction random de Python, et un jour j'ai remarqué qu'en fixant la « graine » avec random.seed, j'obtenais toujours les mêmes nombres. Cela m'a troublé : ce hasard n'en était donc pas un. J'ai voulu comprendre comment un ordinateur fabrique des nombres qui semblent aléatoires, et j'ai découvert qu'il s'agit d'une simple suite définie par récurrence.
L'enjeu et les notions du programme
Étudier une suite définie par récurrence sur des restes, sa périodicité, et discuter ce qu'est un « bon » hasard simulé.
Mathématiques
- Suites définies par récurrence (première)
- Division euclidienne, restes (seconde)
- Loi uniforme, fréquences et fluctuation (seconde, première)
Numérique et sciences informatiques
- Module random, graine (première)
- Sécurité : nombres aléatoires en cryptographie (terminale)
Le plan de l'exposé en 9,5 min
1. Introduction
1 minUn ordinateur exécute des instructions de façon déterministe : il ne peut pas « tirer au sort ». Problématique : comment produit-il des nombres qui ont l'air aléatoires, et quelles sont les limites de ce faux hasard ?
2. Mathématiques : une suite récurrente sur des restes
4 minUn générateur congruentiel linéaire calcule xₙ₊₁=(a xₙ+c)bmod m, c'est-à-dire le reste de la division de a xₙ+c par m. Le premier terme x₀ est la graine. On obtient des entiers entre 0 et m-1, qu'on divise par m pour avoir des nombres dans [0;1[.
Avec a=5, c=3, m=16, x₀=7 : 6, 1, 8, 11, 10, 5, 12, 15, 14, 9, 0, 3, 2, 13, 4, 7, puis 6 à nouveau. Les 16 valeurs apparaissent une fois chacune : la période est maximale.
La suite est forcément périodique : il n'y a que m valeurs possibles, donc deux termes finissent par coïncider, et dès lors tout se répète. Avec un mauvais choix, a=4, c=1 : 13, 5, 5, 5… la suite se bloque. Avec a=5, c=0 : 3, 15, 11, 7, 3… période 4. Un théorème (Hull et Dobell) donne les conditions sur a, c, m pour atteindre la période m.
3. NSI : de bons et de mauvais hasards
3 minPython utilise un générateur plus élaboré, le Mersenne Twister, de période 2¹⁹⁹³⁷-1. Il passe de nombreux tests statistiques : fréquences uniformes, absence de corrélation entre termes successifs.
Mais il reste prévisible : qui connaît l'état interne connaît toute la suite. Pour la cryptographie, Python fournit le module secrets, qui puise dans des sources physiques (mouvements de souris, temps des interruptions). La graine a son utilité : elle rend une simulation reproductible, ce qui est indispensable pour corriger un programme ou vérifier une expérience.
4. Conclusion
1,5 minUn ordinateur imite le hasard par une suite récurrente sur des restes : elle est périodique et prévisible, mais bien choisie, elle passe pour aléatoire. Pour simuler, cela suffit ; pour sécuriser, il faut une vraie source d'imprévisibilité. J'ouvre sur les générateurs quantiques, qui exploitent un hasard physique.
Ce que j'écris au tableau
Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.
6,1,8,11,10,5,12,15,14,9,0,3,2,13,4,7,6,… ( période 16) a=4, c=1: 13,5,5,5,…
Conclusion : la réponse à la question
Le hasard d'un ordinateur est une suite déterministe qui en a l'apparence. Les mathématiques des restes expliquent sa période et guident le choix des paramètres ; les statistiques jugent si l'imitation est réussie.
Les questions probables du jury
Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.
Pourquoi la suite est-elle forcément périodique ?
Elle ne prend que m valeurs ; parmi x₀,…,x_m, deux sont égales (principe des tiroirs), et chaque terme ne dépend que du précédent.
Calculez le terme qui suit 6 avec a = 5, c = 3, m = 16.
5×6+3=33=2×16+1 : c'est 1.
À quoi sert random.seed ?
À fixer la graine pour obtenir la même suite à chaque exécution : la simulation devient reproductible.
Pourquoi ne pas utiliser random pour un mot de passe ?
Sa suite est prévisible si l'on reconstitue son état : on utilise le module secrets.
Comment tester qu'un générateur est uniforme ?
On compare les fréquences observées de chaque valeur à la probabilité théorique, avec un intervalle de fluctuation.
Les pièges qui coûtent des points
- Dire que l'ordinateur produit du vrai hasard.
- Oublier que la suite est périodique.
- Croire qu'une période longue suffit à faire un bon générateur.
Revoir les notions
Autres questions : hasard et simulation
- Comment mélanger une liste pour que tous les ordres soient vraiment équiprobables ?
- Comment simuler un dé à six faces équitable avec une simple pièce de monnaie ?
- Peut-on obtenir un tirage parfaitement équitable avec une pièce truquée dont on ignore le biais ?
- Après n pas faits au hasard, à quelle distance de son point de départ se trouve-t-on ?
Préparer l'oral, pas seulement le contenu
Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.
Méthode : traiter une question de Grand oral →