Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel
Module Matematice
Modul Aleator
Obiectiv
Execută simulări și teste pentru a te pregăti pentru orice erori și întârzieri în timpul construcției terenului agricol, folosind modulul random.
Traversând anexa se află un birou care se ocupă de câteva sarcini administrative legate de documentația referitoare la expediere, locuințe și logistică pentru construcție. Ar fi o idee bună să rulezi câteva scenarii folosind datele disponibile pentru a calcula întârzierile și defecțiunile echipamentelor. Pentru a asista acest proces, avem la dispoziție modulul random, activat prin import random .
Modulul este folosit pentru a genera rezultate aleatorii în diferite grade, permițându-ți să rulezi simulări sau să adaugi elemente aleatorii în calculele/exercițiile tale. Pentru scopurile noastre, vom folosi următoarele funcții:
random.seed(): Setează sămânța pentru generarea aleatorie, ia un argument care reprezintă numărul de sămânță pe care dorești să-l folosești. Aceasta înseamnă că orice funcție aleatorie utilizată cu o anumită sămânță va returna aceleași rezultate atunci când este folosită. Se folosește pentru a exercita un anumit control asupra generării aleatorii și pentru a putea recrea anumite rezultate.random.random(): Returnează un număr real aleatoriu între0și1.random.randint(): Ia două argumente, generează un număr între cele două argumente, incluzând valorile limită. Rezultatul este returnat ca număr întreg.random.uniform(): Similar funcției anterioare, dar returnează un număr real aleatoriu în loc de un întreg.random.triangular(): Similar funcției anterioare, dar are un argument suplimentar, un modificator numit mode. Mode-ul trebuie să fie un număr între cele două numere din intervalul aleator. Numărul generat va fi statistic mai apropiat de mode decât un număr pur aleator între primele două argumente.random.choice(): Ia o listă ca argument, și selectează la întâmplare un element din acea listă.random.choices(): Generează o listă aleatorie extrasă dintr-o altă listă, luând trei argumente: o listă din care dorești să extragi, o altă listă în care specifici ponderea pe care dorești să o atribui fiecărui element din lista de eșantionare și, în final, o variabilă numită k, căreia îi poți atribui o valoare ce indică câte eșantioane dorești să iei din listă. Numărul de eșantioane poate fi mai mare decât dimensiunea listei, deoarece se vor genera duplicate bazate pe ponderile alocate.random.shuffle(): Ia o listă ca argument și o amestecă aleatoriu.random.sample(): Ia două argumente, o listă din care să extragă eșantioane și numărul de eșantioane dorite. O versiune simplificată a funcțieirandom.choices().
Pentru început, mergi către semnul X luminos și îndreaptă-te către birou, folosește funcția read() pentru a citi nota și a identifica punctele de date necesare pentru a rula o simulare cu o anumită variație aleatorie. Vom rula o simulare a defectării echipamentului; nota te va informa despre ce seed să folosești pentru generarea aleatorie, precum și despre lista din care se face eșantionarea. Folosește funcția random.seed() și inserează valoarea furnizată în nota.
Mergi către semnul X întunecat de pe covorul albastru și îndreaptă-te către birou, avem o constantă de tip listă numită sectors care conține zonele terenului agricol descrise în nota anterioară. Creează o variabilă numită selection pentru a stoca valoarea returnată de random.choice(), folosind lista constantă sectors pentru a obține un eșantion, astfel: selection = random.choice(sectors). Creează o altă variabilă numită delay și stochează valoarea returnată de random.random() pentru a simula marja de eroare cauzată de întârzieri.
Creează încă o variabilă numită defect și stochează valoarea lui random.randint() pentru a genera un procent de defectare potențială a echipamentului. Adaugă ca argumente 0 și 15 pentru a genera un procent între aceste două numere. Odată ce variabilele selection, delay și defect au fost configurate, folosește funcția write() predefinită cu cele trei variabile, în această ordine, pentru a nota punctele de date care pot fi folosite pentru a testa posibile probleme în construcție.
Mergi către semnul X auriu și folosește funcția read() pentru a continua rularea proiecțiilor, datele din nota vor conține materiale, cantități și date de eșantionare. Vom rula o simulare mai amplă folosind datele din nota, inclusiv o constantă de tip listă numită materials care stochează tipurile de materiale descrise în nota.
Mergi către semnul X întunecat de pe covorul roșu și îndreaptă-te către birou. Creează o listă numită weights și stochează cele patru valori numerice prezente în nota care corespund materialelor, în ordinea în care sunt prezentate. De exemplu: weights = [400, 600 , -insert value-, -insert value-]
Creează o variabilă numită simulation și stochează valoarea returnată de random.choices(), adăugând lista constantă materials, lista weights creată și o listă numită k care conține unitățile de eșantionare menționate în nota, astfel: simulation = random.choices(materials, weights , k = insert sampling units ). Folosește variabila simulation împreună cu funcția write() predefinită pentru a nota datele.
Mergi către semnul X întunecat de pe covorul verde și îndreaptă-te către birou, folosește funcția random.shuffle() cu lista simulation creată pentru a o amesteca, astfel: random.shuffle(simulation). Aceasta va amesteca lista; nu este nevoie să stochezi valoarea, deoarece modifică direct lista. Creează o listă numită sample pentru a stoca valoarea returnată de random.sample(), adaugă lista simulation ca prim argument și, ca al doilea argument, ia un eșantion de 3 pentru a selecta trei elemente aleatorii, astfel: sample = random.sample(simulation, k=3). Folosește simulation și sample împreună cu funcția write() predefinită pentru a nota noile eșantioane.
În final, mergi către semnul X întunecat de pe covorul mov și îndreaptă-te către birou, creează o variabilă numită defect și stochează rezultatul funcției random.uniform(), adăugând argumentele 3 și 10. Acestea sunt valorile de eșantionare pentru simularea inițială și eșantionul preluat din aceasta; le vom folosi pentru a genera marje potențiale de defectare a echipamentului din eșantionul obținut.
Creează o variabilă numită losses și stochează valoarea returnată de random.triangular(), adăugând valorile 200, 600 și 400. Acestea sunt valorile materialelor prezentate în nota anterioară, respectiv cea mai mică, cea mai mare și valoarea cea mai apropiată de mijloc. Acest lucru ne permite să obținem o valoare aleatorie triunghiulară bazată pe numărul materialelor utilizate în simulare. Folosește valorile defect și losses împreună cu funcția write() predefinită pentru a obține rezultatele și a completa nivelul.