Avanceret Python Udviklingskursus
Kapitel
>
Niveau
Matematikmoduler
Tilfældig modul
Mål
Kør simulationer og tests for at forberede dig på eventuelle fejl og tilbageslag under opførelsen af landbrugsbyggeriet ved hjælp af random-modulet.
Når du krydser anneksen, er der et kontor, der håndterer nogle administrative opgaver med papirarbejde vedrørende forsendelse, bolig og logistik for byggeriet. Det ville være en god idé at køre nogle scenarier ved hjælp af de tilgængelige data for at beregne tilbageslag og udstyrsfejl. Til at hjælpe med dette har vi random-modulet, aktiveret med import random .
Modulet bruges til at generere tilfældige output i varierende grad, så du kan køre simulationer eller tilføje tilfældige elementer til dine beregninger/øvelser. Til vores formål vil vi bruge følgende funktioner:
random.seed(): Sætter frøet for tilfældig generering, og tager et argument, som er det frønummer, du ønsker at bruge. Dette betyder, at enhver tilfældig funktion, der anvendes med et givet frø, vil returnere de samme resultater, når den bruges. Dette bruges til at udøve en vis kontrol over den tilfældige generering og for at kunne genskabe bestemte resultater.random.random(): Returnerer et tilfældigt flydende tal mellem0og1.random.randint(): Tager to (2) argumenter, genererer et tal mellem de to argumenter, inklusive tallene selv. Resultatet returneres som hele tal.random.uniform(): Samme som den foregående funktion, men returnerer et tilfældigt flydende tal i stedet for et helt tal.random.triangular(): Samme som den foregående funktion, men har et ekstra argument som en modifikator kaldet mode. Mode skal være et tal mellem de to tal i det tilfældige interval. Det genererede tilfældige tal vil statistisk set være tættere på mode i stedet for et rent tilfældigt tal mellem de to første argumenter.random.choice(): Tager en liste som argument, og vælger et (1) element fra listen tilfældigt.random.choices(): Genererer en tilfældig liste udvalgt fra en anden liste, og tager tre (3) argumenter: en liste, du vil udvælge fra, en anden liste hvor du kan angive, hvor meget vægt du vil give til hvert element i den liste, du udvælger fra, og til sidst en variabel kaldet k, som du kan tildele en værdi, der angiver, hvor mange prøver du vil tage fra listen. Antallet af prøver kan være større end selve listen, da der kan genereres dubletter baseret på de vægte, du har angivet.random.shuffle(): Tager en liste som argument og blander den tilfældigt.random.sample(): Tager to argumenter: en liste at udvælge fra og antallet af prøver, du gerne vil tage. En forenklet version afrandom.choices().
For at komme i gang, gå til det lyse X-mærke og vend dig mod skrivebordet, brug read() funktionen til at læse notatet og identificere de datapunkter, der er nødvendige for at køre en simulation med noget tilfældig variation. Vi skal køre en simulation af udstyrsfejl; notatet vil informere dig om, hvilket seed der skal bruges til den tilfældige generering, samt den liste, der udvælges fra. Brug random.seed() funktionen og indsæt den værdi, der er angivet i notatet.
Gå til det mørke X-mærke over det blå tæppe og vend dig mod skrivebordet, vi har en listekonstant kaldet sectors, som indeholder de områder af landbruget, der er beskrevet i det tidligere notat. Opret en variabel kaldet selection for at gemme værdien af random.choice(), brug sectors listekonstanten til at hente en prøve fra listen, således: selection = random.choice(sectors). Opret en anden variabel kaldet delay og gem værdien af random.random() for at simulere fejltolerancer forårsaget af forsinkelser.
Opret endnu en variabel kaldet defect og gem værdien af random.randint() for at generere en procentdel af potentiel udstyrsfejl. Tilføj argumenterne 0 og 15 for at generere en procent mellem disse to tal. Når variablerne: selection, delay og defect er oprettet, skal du bruge den forudskrevne write() funktion med de tre (3) variabler i den rækkefølge, for at nedtegne datapunkter, der kan bruges til at teste for potentielle problemer i byggeriet.
Gå til det gyldne X-mærke og brug read() funktionen til at fortsætte med at køre fremskrivninger. Dataene i notatet vil indeholde materialer, mængder og udtagningsdata. Vi skal køre en større simulation ved hjælp af dataene i notatet, herunder en listekonstant kaldet materials, som opbevarer de materialetyper, der er beskrevet i notatet.
Gå til det mørke X-mærke over det røde tæppe og vend dig mod skrivebordet. Opret en liste kaldet weights og gem de fire (4) talværdier, der findes i notatet, svarende til materialerne i den rækkefølge, de præsenteres. For eksempel: weights = [400, 600 , -insert value-, -insert value-]
Opret en variabel kaldet simulation og gem værdien af random.choices(), tilføj materials listekonstanten, den weights liste, du har oprettet, og en variabel kaldet k med de udtagningsenheder, der er angivet i notatet, således: simulation = random.choices(materials, weights , k = insert sampling units ). Brug simulation variablen med den forudskrevne write() funktion til at nedtegne dataene.
Gå til det mørke X-mærke over det grønne tæppe og vend dig mod skrivebordet, brug random.shuffle() funktionen med den simulation liste, du har oprettet, for at blande den, således: random.shuffle(simulation). Dette vil blande listen; der er ikke behov for at gemme værdien, da den ændrer listen direkte. Opret en liste kaldet sample for at gemme værdien af random.sample(). Tilføj simulation-listen som det første argument, og for det andet argument, brug en prøve på 3 for at tage tre (3) tilfældige elementer som en prøve, således: sample = random.sample(simulation, k=3). Brug simulation og sample med den forudskrevne write() funktion til at nedtegne de nye prøver.
Endelig, gå til det mørke X-mærke over det lilla tæppe og vend dig mod skrivebordet, opret en variabel kaldet defect og gem resultatet af random.uniform(), tilføj argumenterne 3 og 10. Dette er udtagningsværdierne for den oprindelige simulation og prøven taget derfra; vi vil bruge dette til at generere potentielle marginer for udstyrsfejl fra den prøve, vi tog.
Opret en variabel kaldet losses og gem værdien af random.triangular(), tilføj værdierne 200, 600 og 400. Disse er materialenumrene, der er angivet i det forrige notat, specifikt det laveste, det højeste og det tal, der ligger tættest på midten. Dette gør det muligt for os at få en triangulær tilfældig værdi baseret på antallet af materialer, som simulationen benyttede. Brug værdierne defect og losses med den forudskrevne write() funktion for at få resultater og fuldføre niveauet.