Avancerad Pythonutvecklingskurs
Kapitel
>
Nivå
Matematikmoduler
Slumpmodul
Mål
Kör simuleringar och tester för att förbereda för eventuella fel och motgångar under jordbruksmarkens konstruktion genom att använda modulen random.
Över annexet finns ett kontor som hanterar vissa administrativa uppgifter, hanterar en del pappersarbete kring frakt, boende och logistik för konstruktionen. Det vore en bra idé att köra några scenarier med den tillgängliga datan för att beräkna motgångar och utrustningsfel. För att hjälpa till med detta har vi modulen random, aktiverad genom import random .
Modulen används för att generera slumpmässiga utfall i olika grad, vilket gör att du kan köra simuleringar eller lägga till slumpmässiga element i dina beräkningar/övningar. För våra syften kommer vi att använda följande funktioner:
random.seed(): Sätter fröet för slumpmässig generering, tar ett argument som är frönummret du vill använda. Detta innebär att alla slumpmässiga funktioner som används med ett givet frö kommer att ge samma resultat när de används. Detta används för att utöva viss kontroll över slumpmässig generering och för att kunna återskapa vissa resultat.random.random(): Returnerar ett slumpmässigt flyttal mellan0och1.random.randint(): Tar två(2) argument, genererar ett tal mellan de två argumenten, inklusive talen själva. Resultatet returneras som heltal.random.uniform(): Samma som den föregående funktionen men returnerar ett slumpmässigt flyttal istället för ett heltal.random.triangular(): Samma som den föregående funktionen men har ett extra argument som modifierare kallad mode. Mode måste vara ett tal mellan de två talen i det slumpmässiga intervallet. Det slumpmässiga tal som genereras kommer att vara statistiskt närmare mode än att vara ett rent slumpmässigt tal mellan de två(2) första argumenten.random.choice(): Tar en lista som argument, väljer ett (1) objekt från listan slumpmässigt.random.choices(): Genererar en slumpmässig lista, ett urval från en annan lista, och tar tre(3) argument: en lista du vill välja från, en annan lista där du kan ange hur mycket vikt du vill ge varje objekt i den ursprungliga listan, samt en variabel med namnet k där du anger hur många urval du vill ta från listan. Antalet urval kan vara större än listan själv eftersom den genererar dubletter baserat på de vikter du angivit.random.shuffle(): Tar en lista som argument och blandar den slumpmässigt.random.sample(): Tar två argument, en lista att ta ett urval från och antalet urval du vill ta. En förenklad version avrandom.choices().
För att börja, gå till den ljusa X-markeringen och vänd dig mot disken, använd funktionen read() för att läsa memot och identifiera de datapunkter som behövs för att köra en simulering med en viss slumpmässig variation. Vi ska köra en simulering av utrustningsfel, memot kommer att informera dig om vilket seed som ska användas för den slumpmässiga genereringen samt listan som den tar sitt urval från. Använd funktionen random.seed() och ange värdet som angivits i memot.
Gå till den mörka X-markeringen över den blå mattan och vänd dig mot disken, vi har en konstant lista vid namn sectors som innehåller jordbruksområdena som beskrevs i det tidigare memot. Skapa en variabel vid namn selection för att lagra värdet av random.choice(), använd den konstanta listan sectors för att hämta ett urval från listan, på följande sätt: selection = random.choice(sectors). Skapa en annan variabel vid namn delay och lagra värdet av random.random() för att simulera felmarginaler orsakade av förseningar.
Skapa ytterligare en variabel vid namn defect och lagra värdet av random.randint() för att generera en procentsats för potentiellt utrustningsfel. Lägg till argumenten 0 och 15 för att generera en procentsats mellan dessa två värden. När variablerna: selection, delay och defect har satts upp, använd den förskrivna funktionen write() med de tre(3) variablerna i den ordningen, för att notera de datapunkter som kan användas för att testa potentiella problem i konstruktionen.
Gå till den gyllene X-markeringen och använd funktionen read() för att fortsätta köra projektioner, datan i memot kommer att innehålla material, kvantiteter och urvalsdata. Vi ska köra en större simulering med datan i memot, inklusive en konstant lista vid namn materials som lagrar de materialtyper som beskrivs i memot.
Gå till den mörka X-markeringen över den röda mattan och vänd dig mot disken. Skapa en lista vid namn weights och lagra de fyra(4) siffervärden som anges i memot, motsvarande materialen i den ordning de presenteras. Till exempel: weights = [400, 600 , -insert value-, -insert value-]
Skapa en variabel vid namn simulation och lagra värdet av random.choices(), lägg till den konstanta listan materials, listan weights du skapade och en lista med namnet k innehållande de urvalsenheter som anges i memot, på följande sätt: simulation = random.choices(materials, weights , k = insert sampling units ). Använd variabeln simulation med den förskrivna funktionen write() för att skriva ned datan.
Gå till den mörka X-markeringen över den gröna mattan och vänd dig mot disken, använd funktionen random.shuffle() med listan simulation du skapade för att blanda den, på följande sätt: random.shuffle(simulation). Detta kommer att blanda listan, ingen anledning att lagra värdet eftersom den ändrar listan direkt. Skapa en lista vid namn sample för att lagra värdet av random.sample(), lägg till listan simulation som första argument och för det andra argumentet, ta ett urval av 3 för att välja tre(3) slumpmässiga objekt som ett sample, på följande sätt: sample = random.sample(simulation, k=3). Använd simulation och sample med den förskrivna funktionen write() för att skriva ned de nya urvalen.
Avslutningsvis, gå till den mörka X-markeringen över den lila mattan och vänd dig mot disken, skapa en variabel vid namn defect och lagra resultatet av random.uniform(), lägg till argumenten 3 och 10. Dessa är urvalsparametrar för den ursprungliga simuleringen och det urval vi tog, och vi kommer att använda detta för att generera potentiella felmarginaler för utrustningen baserat på det urval vi tog.
Skapa en variabel vid namn losses och lagra värdet av random.triangular(), lägg till värdena 200, 600 och 400. Dessa är materialvärdena som anges i det tidigare memot, specifikt det lägsta, högsta och det värde som ligger närmast mitten. Detta gör att vi kan få ett triangulärt slumpmässigt värde baserat på antalet material som simuleringen använde. Använd värdena defect och losses med den förskrivna funktionen write() för att få resultat och slutföra nivån.