Générateur de nombres pseudo-aléatoires et principe de reproductibilité
Terminale Technologique · Mathématiques STI2D Terminale
À retenir
• Un générateur pseudo-aléatoire calcule u_n+1 = f(u_n) à partir d'une graine : il est déterministe. • Graine fixée suite identique : c'est la condition de reproductibilité d'un rapport. • Sur [0\,;\,1[, on doit avoir E = 0,5 et = 112 0,2887. • 0 et 1 ne sont pas atteints : le tirage uniforme est défini sur [a\,;\,b[. • Un écart entre deux simulations se juge en nombre d'écarts-types, jamais en valeur absolue.
Le cours
1. Un générateur est une machine à états Un générateur de nombres pseudo-aléatoires ne tire pas au sort : il calcule. Il part d'un entier appelé graine, et chaque nouveau nombre est obtenu par une règle déterministe appliquée au précédent : u_n+1 = f(u_n\,;\,n). L'aléa n'est donc qu'au choix de la graine. Trois qualités sont attendues d'un bon générateur : • Uniformité : les valeurs tombent dans [0\,;\,1\,[ avec la même densité partout, sans préférence pour 0,1 que pour 0,75. • Indépendance : connaître les n premières valeurs n'apporte aucune information sur la suivante. • Reproductibilité : à graine fixée, la suite est rigoureusement identique, sur n'importe quelle machine. La troisième qualité est la condition de validité d'un rapport de simulation : sans elle, un résultat simulé n'est pas opposable. 2. Fixer la graine et les six premières valeurs La graine est le seul paramètre qui rend le hasard « reproductible ». Avec la graine 2024, deux programmes différents donnent la même liste ; avec une autre graine, ils donnent autre chose. from random import Random def tirages(graine, nombre): r = Random(graine) # la graine fixe l'état initial return [r.random() for _ in range(nombre)] print(tirages(2024, 6)) # [0.470091, 0.728264, 0.303751, 0.887298, 0.410089, 0.716614] print(tirages(2024, 6) == tirages(2024, 6)) # True RangGraine 2024Graine 7 10,4700910,323833 20,7282640,150849 30,3037510,650934 40,8872980,072436 50,4100890,535882 60,7166140,365689 3. Les trois tests avant de croire une simulation 1. Moyenne : pour N valeurs uniformes sur [0\,;\,1\,[, elle doit tendre vers 0,5. Sur 200\,000 tirages, on obtient 0,50047. 2. Écart-type : il doit tendre vers 112 = 0,28868. On obtient 0,28879, soit 0,04\ \% d'écart relatif. 3. Étendue : le minimum vaut 0,0000004 et le maximum 0,9999965. Les bornes 0 et 1 ne sont pas atteintes : un intervalle fermé n'est pas un modèle exact du tirage. Si l'un des trois tests échoue, ce n'est pas le modèle qu'il faut corriger, mais le générateur. Changer de graine et recommencer : les résultats doivent rester du même ordre de grandeur. 4. Pièges • Oublier la graine : le rapport contient un résultat que l'on ne saura pas reproduire, et un correcteur ne pourra pas le vérifier. La graine se note avec le nombre de simulations et l'identifiant de la version du programme. • Appeler random() sans créer d'instance explicite : la graine est alors celle de l'environnement, variable d'une machine à l'autre. • Conclure à un biais parce que deux graines donnent 0,0352 et 0,0408 : l'écart de 0,0056 représente 2,0 écart-types d'estimation, ce qui arrive dans 4\ \% des cas avec un générateur parfaitement correct.
Dans ce chapitre
- Épreuve de Bernoulli et loi binomiale de classe de Terminale
- Loi uniforme sur un intervalle et espérance de classe de Terminale
- Calcul d'une moyenne et d'un écart-type de classe de 3e
- Générateur de nombres pseudo-aléatoires et principe de reproductibilité
- Simulation d'une variable uniforme sur un intervalle
- Estimation d'une probabilité par fréquence sur N simulations
- Intervalle de fluctuation d'un estimateur
- Méthode de Monte-Carlo pour le calcul d'une aire
- Simulation d'un atelier : temps de cycle et files d'attente
- Nombre de simulations nécessaire pour une précision donnée
- Convergence et vérification d'un résultat simulé
- Générateur congruentiel simple et périodicité d'une suite pseudo-aléatoire
- Interprétation d'un histogramme issu d'une simulation
- Bilan : Synthèse et méthode sur Méthode de Monte-Carlo et simulation stochastique d'un procédé