Accumulation d'erreurs
La start-up nation est forte et la bourse de Paris décide d'introduire un nouvel indice. D'une valeur initiale de 1000 €, ce nouvel indice va cristalliser toute l'attention des marchés.
Vous travaillez à la bourse de Paris et on vous donne pour mission de simuler l'évolution de cet indice. Pour des raisons marketing, il n'est pas possible d'afficher plus de 3 décimales de l'indice. Votre hiérarchie décide donc de ne conserver que les 3 premières décimales de l'indice dans les calculs. Dont acte. Vous programmez donc la simulation de cet indice, tout en gardant en tête vous cours sur la représentation des nombres réels par les flottants en tête.
- Écrire une fonction1IndiceGénérer un nombre aléatoire dans une plage spécifique puis l'ajouter à la valeur initiale.
evolution(valeur: float) -> floatqui renvoie la somme de la valeur donnée et d'une variation aléatoire comprise entre -0,05 et 0,05. Utiliserrandom.uniform(-0.05, 0.05). Cette fonction simule une évolution aléatoire de l'indice engendrée par le cours des actions. - Écrire une fonction2IndiceMultiplier la valeur par mille puis appliquer une fonction de troncature avant de diviser le résultat par mille.
valeur_tronquee(valeur: float) -> floatqui calcule la valeur tronquée à trois décimales. Utiliser la fonctionmath.trunc. - Écrire une fonction3IndiceItérer avec une boucle un million de fois pour mettre à jour les deux variables (vraie et affichage).
simulation(valeur_debut: float) -> tuple[float, float]qui renvoie un tuple contenant la valeur exacte de l'indice et la valeur affichée après un million d'itérations. Sur deux ans, on estime à un million le nombre d'évolutions de l'indice. Que pensez-vous de l'idée de tronquer à 3 décimales ?
NB: cet exercice est fondé sur une histoire vraie, celle de l'indice de la bourse de Vancouver en 1982.
Console initialisée. En attente de l'interpréteur...