Edistynyt Python-kehityskurssi
Luku
>
Taso
Matematiikan moduulit
Satunnaismoduli
Tavoite
Suorita simulaatioita ja testejä valmistautuaksesi mahdollisiin virheisiin ja takaiskuihin maatilan rakentamisessa käyttämällä random-moduulia.
Rinnettä vastaavassa liitännäistalossa on toimisto, joka hoitaa joitakin hallinnollisia tehtäviä, kuten paperityötä lähetyksistä, asumisesta ja logistiikasta rakentamisessa. Olisi hyvä idea suorittaa skenaarioita käyttäen käytettävissä olevia tietoja laskemaan takaiskuihin ja laitevikoihin liittyviä riskejä. Auttaaksemme tässä meillä on käytössämme random-moduuli, joka aktivoidaan komennolla import random .
Moduulia käytetään satunnaisten arvojen tuottamiseen eri asteissa, jolloin voit suorittaa simulaatioita tai lisätä satunnaisia elementtejä laskelmiisi/harjoituksiisi. Tarkoituksiimme käytämme seuraavia funktioita:
random.seed(): Asettaa satunnaisgeneroinnin siemenen, ottaa yhden argumentin, joka on käyttämäsi siemenluku. Tämä tarkoittaa, että mikä tahansa satunnaistoiminto, jota käytetään annetun siemenen kanssa, palauttaa samat tulokset. Tätä käytetään satunnaisgeneroinnin hallitsemiseksi ja tiettyjen tulosten uudelleenluomiseksi.random.random(): Palauttaa satunnaisen liukulukuarvon välillä0ja1.random.randint(): Ottaa kaksi (2) argumenttia, ja generoi luvun näiden kahden argumentin väliltä, mukaan lukien itse luvut. Tulos palautetaan kokonaislukuna.random.uniform(): Sama kuin edellinen funktio, mutta palauttaa satunnaisen liukulukuarvon kokonaisluvun sijasta.random.triangular(): Sama kuin edellinen funktio, mutta sisältää ylimääräisen argumentin, jota kutsutaan mode:ksi. Moden on oltava luku satunnaisalueen kahden luvun välillä. Generoitu satunnaisluku on tilastollisesti lähempänä modea kuin täysin satunnainen luku annettujen kahden (2) argumentin välillä.random.choice(): Ottaa listan argumenttina, ja valitsee siitä yhden (1) kohteen satunnaisesti.random.choices(): Generoi satunnaisen listan näytteitä toisesta listasta, ottaa kolme (3) argumenttia: listan, josta haluat näytteen, toisen listan, jolla määritellään kunkin kohteen painoarvo, ja lopuksi muuttujan nimeltä k, johon voit määrittää kuinka monta näytettä haluat ottaa listasta. Näytteiden määrä voi olla suurempi kuin itse lista, koska se generoi kopioita määrittämiesi painoarvojen perusteella.random.shuffle(): Ottaa listan argumenttina ja sekoittaa sen satunnaisesti.random.sample(): Ottaa kaksi argumenttia, listan, josta haluat näytteen, ja näytteiden lukumäärän. Yksinkertaistettu versiorandom.choices()-funktiosta.
Aluksi kävele valon X-merkin luo ja kohtaa tiskin, käytä read()-funktiota lukeaksesi muistiinpanon ja tunnistaaksesi tiedot, joita tarvitaan simulaation suorittamiseksi satunnaisvaihtelun kanssa. Aiomme suorittaa simulaation laitevioista; muistiinpano kertoo, mitä seed-arvoa käytetään satunnaisgenerointiin sekä listan, josta näyte otetaan. Käytä random.seed()-funktiota ja syötä muistiinpanossa annettu arvo.
Kävele tumman X-merkin luo sinisen maton yli ja kohtaa tiskin; meillä on lista vakio nimeltä sectors, joka sisältää maatilan alueet, kuten edellisessä muistiinpanossa on esitetty. Luo muuttuja nimeltä selection tallentaaksesi random.choice()-funktion arvon; käytä sectors-listaa saadaksesi näytteen listasta, esimerkiksi näin: selection = random.choice(sectors). Luo toinen muuttuja nimeltä delay ja tallenna siihen random.random()-funktion arvo simuloidaksesi viiveistä johtuvia virhemarginaaleja.
Luo vielä yksi muuttuja nimeltä defect ja tallenna siihen random.randint()-funktion arvo generoimaan mahdollisen laitevian prosenttiosuus. Lisää argumentteina 0 ja 15 luodaksesi prosenttiosuuden näiden kahden luvun välillä. Kun muuttujat selection, delay ja defect on asetettu, käytä valmiiksi kirjoitettua write()-funktiota näiden kolmen (3) muuttujan kanssa tässä järjestyksessä, jotta voit kirjata tiedot, joita käytetään rakentamiseen mahdollisesti liittyvien ongelmien testaamiseen.
Kävele kultaisen X-merkin luo ja käytä read()-funktiota jatkaaksesi ennusteiden tekemistä; muistiinpanon tiedot sisältävät materiaaleja, määriä ja otetietoja. Aiomme suorittaa laajemman simulaation käyttäen muistiinpanon tietoja, mukaan lukien vakio lista nimeltä materials, joka sisältää muistiinpanossa esitetyt materiaalityypit.
Kävele tumman X-merkin luo punaisen maton yli ja kohtaa tiskin. Luo lista nimeltä weights ja tallenna siihen muistiinpanossa esitetyt neljä (4) lukuarvoa, jotka vastaavat materiaaleja niiden esitysjärjestyksessä. Esimerkiksi: weights = [400, 600 , -insert value-, -insert value-]
Luo muuttuja nimeltä simulation ja tallenna siihen random.choices()-funktion tulos; lisää siihen materials-vakio lista, luomasi weights-lista ja muuttuja nimeltä k, joka sisältää muistiinpanossa esitetyt otayksiköt, esimerkiksi näin: simulation = random.choices(materials, weights , k = insert sampling units ). Käytä simulation-muuttujaa valmiiksi kirjoitetun write()-funktion kanssa kirjataaksesi tiedot.
Kävele tumman X-merkin luo vihreän maton yli ja kohtaa tiskin; käytä random.shuffle()-funktiota luomallasi simulation-listalla sekoittaaksesi sen, esimerkiksi näin: random.shuffle(simulation). Tämä sekoittaa listan, eikä arvoa tarvitse tallentaa, sillä toiminto muokkaa listaa suoraan. Luo lista nimeltä sample ja tallenna siihen random.sample()-funktion arvo; lisää ensimmäisenä argumenttina simulation-lista ja toisena argumenttina ota näyte, jossa on 3 satunnaista kohdetta, esimerkiksi näin: sample = random.sample(simulation, k=3). Käytä simulation- ja sample-muuttujia valmiiksi kirjoitetun write()-funktion kanssa kirjataaksesi uudet näytteet.
Lopuksi kävele tumman X-merkin luo violetteja matoja pitkin ja kohtaa tiskin; luo muuttuja nimeltä defect ja tallenna siihen random.uniform()-funktion tulos, lisää argumentteina 3 ja 10. Nämä ovat alkuperäisen simulaation ja siitä otetun näytteen otayksiköt, ja käytämme niitä generoimaan mahdollisia laitevian marginaaleja otokselle.
Luo muuttuja nimeltä losses ja tallenna siihen random.triangular()-funktion arvo; lisää arvot 200, 600 ja 400. Nämä ovat edellisessä muistiinpanossa esitetyt materiaaliluvut, erityisesti pienin, suurin ja keskiarvoa lähinnä oleva arvo. Tämä mahdollistaa kolmikulmaisen satunnaisarvon tuottamisen simulaatiossa käytettyjen materiaalien määrän perusteella. Käytä defect- ja losses-arvoja valmiiksi kirjoitetun write()-funktion kanssa saadaksesi tulokset ja suorittaaksesi tason loppuun.