Cours avancé de développement Python
Chapitre
>
Niveau
Modules Mathématiques
Module Aléatoire
Objectif
Exécutez des simulations et des tests pour vous préparer à toute erreur et contretemps lors de la construction de la ferme en utilisant le module random.
En traversant l'annexe, se trouve un bureau qui s'occupe de certaines tâches administratives liées à la paperasserie concernant l'expédition, le logement et la logistique pour la construction. Il serait judicieux d'exécuter quelques scénarios en utilisant les données disponibles pour calculer les retards et les défaillances d'équipement. Pour vous aider, nous disposons du module random, activé par import random.
Le module est utilisé pour générer des sorties aléatoires à différents degrés, vous permettant ainsi de réaliser des simulations ou d'ajouter des éléments aléatoires à vos calculs/exercices. Pour nos besoins, nous utiliserons les fonctions suivantes :
random.seed(): Définie la graine pour la génération aléatoire, prend un argument qui est le nombre de graine que vous souhaitez utiliser. Cela signifie que toute fonction aléatoire utilisée avec une graine donnée renverra les mêmes résultats lorsqu'elle sera utilisée. Cela permet de contrôler la génération aléatoire et de pouvoir recréer certains résultats.random.random(): Renvoie un nombre à virgule flottante aléatoire compris entre0et1.random.randint(): Prend deux (2) arguments, génère un nombre entre les deux arguments, incluant ces nombres eux-mêmes. Le résultat est retourné sous forme de nombre entier.random.uniform(): Semblable à la fonction précédente, mais renvoie un nombre à virgule flottante aléatoire au lieu d'un entier.random.triangular(): Semblable à la fonction précédente, mais possède un argument supplémentaire, un modificateur appelé mode. Le mode doit être un nombre compris entre les deux valeurs de la plage aléatoire. Le nombre généré sera statistiquement plus proche du mode plutôt qu'être purement aléatoire entre les deux premiers arguments.random.choice(): Prend une liste en argument et en choisit un (1) élément au hasard.random.choices(): Génère une liste aléatoire échantillonnée à partir d'une autre liste, prend trois (3) arguments : une liste à partir de laquelle vous souhaitez échantillonner, une autre liste indiquant le poids que vous souhaitez appliquer à chaque élément de la liste d'origine, et enfin une variable nommée k à laquelle vous pouvez assigner une valeur déterminant le nombre d'échantillons que vous souhaitez prélever. Le nombre d'échantillons peut être supérieur à la taille de la liste, car il générera des duplicata en fonction des poids attribués.random.shuffle(): Prend une liste en argument et la mélange de manière aléatoire.random.sample(): Prend deux arguments, une liste à partir de laquelle échantillonner et le nombre d'échantillons à prélever. Une version simplifiée derandom.choices().
Pour commencer, rendez-vous vers la marque X lumineuse et faites face au bureau, utilisez la fonction read() pour lire la note de service et identifier les points de données nécessaires pour exécuter une simulation avec une certaine variance aléatoire. Nous allons exécuter une simulation de défaillance d'équipement, la note de service vous informera de la seed à utiliser pour la génération aléatoire ainsi que de la liste à échantillonner. Utilisez la fonction random.seed() et insérez la valeur fournie dans la note.
Rendez-vous vers la marque X sombre sur le tapis bleu et faites face au bureau, nous avons une constante de liste nommée sectors qui contient les zones de la ferme détaillées dans la note précédente. Créez une variable nommée selection pour stocker la valeur de random.choice(), utilisez la constante de liste sectors pour récupérer un échantillon de la liste, comme ceci: selection = random.choice(sectors). Créez une autre variable nommée delay et stockez-y la valeur de random.random() pour simuler une marge d'erreur causée par les retards.
Créez une dernière variable nommée defect et stockez-y la valeur de random.randint() afin de générer un pourcentage de défaillance potentielle de l'équipement. Ajoutez en arguments 0 et 15 pour générer un pourcentage compris entre ces deux nombres. Une fois les variables : selection, delay et defect configurées, utilisez la fonction pré-écrite write() avec ces trois (3) variables dans cet ordre pour enregistrer les points de données pouvant être utilisés pour tester les problèmes potentiels lors de la construction.
Rendez-vous vers la marque X dorée et utilisez la fonction read() pour continuer à exécuter des projections, les données de la note contiendront des matériaux, des quantités et des données d'échantillonnage. Nous allons réaliser une simulation plus vaste en utilisant les données de la note, incluant une constante de liste nommée materials qui stocke les types de matériaux décrits dans la note.
Rendez-vous vers la marque X sombre sur le tapis rouge et faites face au bureau. Créez une liste nommée weights et stockez-y les quatre (4) valeurs numériques présentes dans la note correspondant aux matériaux dans l'ordre où ils sont présentés. Par exemple: weights = [400, 600 , -insert value-, -insert value-]
Créez une variable nommée simulation et stockez-y la valeur de random.choices(), ajoutez la constante de liste materials, la liste weights que vous avez créée et une variable k avec les unités d'échantillonnage indiquées dans la note, comme ceci: simulation = random.choices(materials, weights , k = insert sampling units ). Utilisez la variable simulation avec la fonction pré-écrite write() pour enregistrer les données.
Rendez-vous vers la marque X sombre sur le tapis vert et faites face au bureau, utilisez la fonction random.shuffle() avec la liste simulation que vous avez créée pour la mélanger, comme ceci: random.shuffle(simulation). Cela mélangera la liste, il n'est pas nécessaire de stocker la valeur puisque cela modifie directement la liste. Créez une liste nommée sample pour stocker la valeur de random.sample(), ajoutez la liste simulation en premier argument et, pour le second argument, prélevez un échantillon de 3 éléments aléatoires, comme ceci: sample = random.sample(simulation, k=3). Utilisez simulation et sample avec la fonction pré-écrite write() pour enregistrer les nouveaux échantillons.
Enfin, rendez-vous vers la marque X sombre sur le tapis violet et faites face au bureau, créez une variable nommée defect et stockez-y le résultat de random.uniform(), en ajoutant les arguments 3 et 10. Ce sont les valeurs d'échantillonnage pour la simulation initiale et l'échantillon en provenir, que nous utiliserons pour générer des marges de défaut d'équipement potentielles à partir de l'échantillon prélevé.
Créez une variable nommée losses et stockez-y la valeur de random.triangular(), en ajoutant les valeurs 200, 600 et 400. Ce sont les nombres de matériaux indiqués dans la note précédente, spécifiquement le plus faible, le plus élevé et celui le plus proche du milieu. Cela nous permet d'obtenir une valeur aléatoire triangulaire basée sur le nombre de matériaux utilisés dans la simulation. Utilisez les valeurs de defect et losses avec la fonction pré-écrite write() pour obtenir les résultats et compléter le niveau.