Coding for KidsCoding for Kids
Creatieve LevelsUitdagingenLerarengids
Stem op functies
Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau

Wiskundemodules
Willekeurige Module

Doel

Voer simulaties en tests uit om je voor te bereiden op eventuele fouten en tegenslagen tijdens de bouw van de landbouwgrond door gebruik te maken van de random module.

Bij het oversteken van de aanbouw bevindt zich een kantoor dat enkele administratieve taken afhandelt, zoals het regelen van papierwerk met betrekking tot verzending, huisvesting en logistiek voor de bouw. Het zou een goed idee zijn om enkele scenario’s te draaien met de beschikbare gegevens om tegenslagen en apparatuurstoringen te berekenen. Om hierbij te helpen, hebben we de random module, geactiveerd door import random .

De module wordt gebruikt om willekeurige uitkomsten te genereren in verschillende gradaties, zodat je simulaties kunt uitvoeren of willekeurige elementen aan je berekeningen/oefeningen kunt toevoegen. Voor onze doeleinden zullen we de volgende functies gebruiken:

  • random.seed(): Stelt de zaadwaarde in voor willekeurige generatie, het neemt één argument, namelijk het zaadnummer dat je wilt gebruiken. Dit betekent dat elke willekeurige functie die met een gegeven zaad wordt gebruikt, dezelfde resultaten oplevert. Dit wordt gebruikt om enigszins controle uit te oefenen over de willekeurige generatie en om bepaalde resultaten te kunnen reproduceren.
  • random.random(): Geeft een willekeurig drijvend kommagetal tussen 0 en 1 terug.
  • random.randint(): Neemt twee(2) argumenten, genereert een getal tussen de twee argumenten, inclusief de getallen zelf. Het resultaat wordt teruggegeven als een geheel getal.
  • random.uniform(): Hetzelfde als de vorige functie, maar geeft een willekeurig drijvend kommagetal terug in plaats van een geheel getal.
  • random.triangular(): Hetzelfde als de vorige functie, maar heeft een extra argument als modifier genaamd mode. De mode moet een getal zijn tussen de twee getallen in het willekeurige bereik. Het willekeurige getal dat wordt gegenereerd, zal statistisch gezien dichter bij de mode liggen in plaats van een puur willekeurig getal tussen de eerste twee(2) argumenten.
  • random.choice(): Neemt een lijst als argument en kiest willekeurig één (1) item uit de lijst.
  • random.choices(): Genereert een willekeurige lijst, gesampled van een andere lijst, en neemt drie(3) argumenten: een lijst waarvan je wilt sampelen, een andere lijst waarin je kunt aangeven hoeveel gewicht je aan elk item in de lijst wilt toewijzen en tenslotte een variabele genaamd k waaraan je een waarde kunt toekennen die aangeeft hoeveel samples je wilt nemen van de lijst. Het aantal samples kan groter zijn dan de lijst zelf, aangezien er duplicaten worden gegenereerd op basis van de toegekende gewichten.
  • random.shuffle(): Neemt een lijst als argument en schudt deze willekeurig door elkaar.
  • random.sample(): Neemt twee argumenten: een lijst om uit te sampelen en het aantal samples dat je wilt nemen. Een vereenvoudigde versie van random.choices().

Begin door naar het lichte X-markering te lopen en richt je op het bureau; gebruik de read() functie om de memo te lezen en de datapunten te identificeren die nodig zijn om een simulatie met wat willekeurige variatie uit te voeren. We gaan een simulatie van een storing van apparatuur uitvoeren; de memo zal je informeren over welke seed je moet gebruiken voor de willekeurige generatie en uit welke lijst er gesampled wordt. Gebruik de random.seed() functie en voer de waarde in die in de memo wordt verstrekt.

Loop naar het donkere X-markering over het blauwe tapijt en richt je op het bureau. We hebben een lijstconstante genaamd sectors die de gebieden van de landbouwgrond bevat zoals beschreven in de vorige memo. Maak een variabele genaamd selection aan om de waarde van random.choice() op te slaan, gebruik de lijstconstante sectors om een sample uit de lijst te halen, zoals dit: selection = random.choice(sectors). Maak een andere variabele genaamd delay aan en sla daarin de waarde van random.random() op om de foutmarges veroorzaakt door vertragingen te simuleren.

Maak nog een variabele genaamd defect en sla daarin de waarde van random.randint() op om een percentage van potentiële apparatuurstoringen te genereren. Voeg als argumenten 0 en 15 toe om een percentage tussen deze twee getallen te genereren. Zodra de variabelen: selection, delay en defect zijn ingesteld, gebruik je de voorgeprogrammeerde write() functie met de drie(3) variabelen in die volgorde, om de datapunten vast te leggen die gebruikt kunnen worden om potentiële problemen bij de constructie te testen.

Loop naar het gouden X-markering en gebruik de read() functie om de projecties verder te draaien; de gegevens in de memo bevatten materialen, hoeveelheden en sampling data. We gaan een grotere simulatie uitvoeren met de gegevens in de memo, inclusief een lijstconstante genaamd materials die de materiaaltypen bevat zoals omschreven in de memo.

Loop naar het donkere X-markering over het rode tapijt en richt je op het bureau. Maak een lijst genaamd weights en sla daarin de vier(4) numerieke waarden op die in de memo aanwezig zijn, overeenkomstig de materialen in de volgorde waarin ze worden gepresenteerd. Bijvoorbeeld: weights = [400, 600 , -insert value-, -insert value-]

Maak een variabele genaamd simulation en sla daarin de waarde van random.choices() op. Voeg de lijstconstante materials, de door jou gemaakte weights lijst en een variabele genaamd k met de sampling units zoals beschreven in de memo toe, zoals dit: simulation = random.choices(materials, weights , k = insert sampling units ). Gebruik de variabele simulation met de voorgeprogrammeerde write() functie om de gegevens vast te leggen.

Loop naar het donkere X-markering over het groene tapijt en richt je op het bureau; gebruik de random.shuffle() functie met de door jou gemaakte simulation lijst om deze te schudden, zoals dit: random.shuffle(simulation). Dit zal de lijst door elkaar schudden, je hoeft de waarde niet op te slaan omdat deze de lijst direct wijzigt. Maak een lijst genaamd sample aan om de waarde van random.sample() op te slaan; voeg de simulation lijst toe als het eerste argument en als tweede argument neem je een sample van 3 om drie(3) willekeurige items als sample te nemen, zoals dit: sample = random.sample(simulation, k=3). Gebruik simulation en sample met de voorgeprogrammeerde write() functie om de nieuwe samples vast te leggen.

Loop ten slotte naar het donkere X-markering over het paarse tapijt en richt je op het bureau. Maak een variabele genaamd defect aan en sla daarin het resultaat van random.uniform() op, voeg de argumenten 3 en 10 toe. Dit zijn de samplewaarden voor de originele simulatie en de daarvan genomen sample; we zullen deze gebruiken om potentiële foutmarges van apparatuur te genereren op basis van de sample die we genomen hebben.

Maak een variabele genaamd losses aan en sla daarin de waarde van random.triangular() op, voeg de waarden 200, 600 en 400 toe. Dit zijn de materiaalnummers zoals beschreven in de vorige memo, specifiek het laagste, hoogste en de waarde het dichtst bij het midden. Hierdoor krijgen we een driehoekige willekeurige waarde gebaseerd op het aantal materialen dat in de simulatie werd gebruikt. Gebruik de waarden defect en losses met de voorgeprogrammeerde write() functie om resultaten te verkrijgen en het niveau te voltooien.

Codeboek