Corso Avanzato di Sviluppo Python
Capitolo
>
Livello

Moduli di matematica
Modulo Random

Obiettivo

Esegui simulazioni e test per prepararti a eventuali errori e contrattempi durante la costruzione delle terre agricole utilizzando il modulo random.

Attraverso l'allegato c'è un ufficio che si occupa di alcune funzioni amministrative gestendo le pratiche relative alla spedizione, alloggi e logistica per la costruzione. Sarebbe una buona idea eseguire alcuni scenari utilizzando i dati disponibili per calcolare contrattempi e guasti alle attrezzature. Per assisterti in questo abbiamo il modulo random, attivato con import random .

Il modulo viene utilizzato per generare output casuali in vari gradi, permettendoti di eseguire simulazioni o aggiungere elementi casuali ai tuoi calcoli/esercizi. Per i nostri scopi useremo le seguenti funzioni:

  • random.seed(): Imposta il seme per la generazione casuale, prende un argomento che è il numero del seme che desideri utilizzare. Ciò significa che qualsiasi funzione casuale utilizzata con un dato seme restituirà gli stessi risultati quando usata. Questo viene utilizzato per esercitare un certo controllo sulla generazione casuale e per poter riprodurre determinati risultati.
  • random.random(): Restituisce un numero a virgola mobile casuale compreso tra 0 e 1.
  • random.randint(): Prende due (2) argomenti, genera un numero tra i due argomenti, inclusi gli stessi numeri. Il risultato viene restituito come numero intero.
  • random.uniform(): Simile alla funzione precedente ma restituisce un numero a virgola mobile casuale al posto di un intero.
  • random.triangular(): Simile alla funzione precedente ma ha un argomento extra come modificatore chiamato mode. Il mode deve essere un numero compreso tra i due numeri dell'intervallo casuale. Il numero casuale generato sarà statisticamente più vicino al mode anziché un numero puramente casuale compreso tra i primi due (2) argomenti.
  • random.choice(): Prende una lista come argomento, sceglie un (1) elemento casualmente dalla lista.
  • random.choices(): Genera una lista casuale campionata da un'altra lista, prende tre (3) argomenti: una lista da cui campionare, un'altra lista in cui specificare il peso da assegnare a ciascun elemento della lista da cui stai campionando e infine una variabile denominata k alla quale assegnare un valore che indica quanti campioni desideri prelevare dalla lista. Il numero di campioni può essere superiore alla lunghezza della lista stessa poiché genererà duplicati in base ai pesi assegnati.
  • random.shuffle(): Prende una lista come argomento e la mescola in modo casuale.
  • random.sample(): Prende due argomenti, una lista da cui campionare e il numero di campioni che desideri prelevare. Una versione semplificata di random.choices() .

Per iniziare, dirigiti verso il segno X luminoso e fronteggia il banco, usa la funzione read() per leggere il promemoria e identificare i punti dati necessari per eseguire una simulazione con una certa variabilità casuale. Eseguiremo una simulazione di guasto delle attrezzature; il promemoria ti indicherà quale seed utilizzare per la generazione casuale, nonché la lista da cui campionare. Usa la funzione random.seed() e inserisci il valore fornito nel promemoria.

Dirigiti verso il segno X scuro sul tappeto blu e fronteggia il banco, abbiamo una costante lista denominata sectors che contiene le aree delle terre agricole descritte nel promemoria precedente. Crea una variabile chiamata selection per memorizzare il valore di random.choice(), utilizza la costante della lista sectors per recuperare un campione dalla lista, in questo modo: selection = random.choice(sectors). Crea un'altra variabile chiamata delay e memorizza il valore di random.random() per simulare i margini di errore causati dai ritardi.

Crea un'altra variabile chiamata defect e memorizza il valore di random.randint() per generare una percentuale di potenziali guasti alle attrezzature. Aggiungi come argomenti 0 e 15 per generare una percentuale compresa tra questi due numeri. Una volta che le variabili: selection, delay e defect sono state configurate, utilizza la funzione write() pre-scritta con le tre (3) variabili in quest'ordine, per registrare i dati che potranno essere utilizzati per testare eventuali problemi nella costruzione.

Dirigiti verso il segno X dorato e usa la funzione read() per continuare a eseguire proiezioni; i dati nel promemoria conterranno materiali, quantità e dati di campionamento. Eseguiremo una simulazione più ampia utilizzando i dati nel promemoria, inclusa una costante lista denominata materials che memorizza i tipi di materiali descritte nel promemoria.

Dirigiti verso il segno X scuro sul tappeto rosso e fronteggia il banco. Crea una lista chiamata weights e memorizza i quattro (4) valori numerici presenti nel promemoria corrispondenti ai materiali nell'ordine in cui sono presentati. Per esempio: weights = [400, 600 , -insert value-, -insert value-]

Crea una variabile chiamata simulation e memorizza il valore di random.choices(), aggiungi la costante della lista materials, la lista weights che hai creato e una lista denominata k contenente le unità di campionamento indicate nel promemoria, in questo modo: simulation = random.choices(materials, weights , k = insert sampling units ). Utilizza la variabile simulation con la funzione write() pre-scritta per registrare i dati.

Dirigiti verso il segno X scuro sul tappeto verde e fronteggia il banco, usa la funzione random.shuffle() con la lista simulation che hai creato per mescolarla, in questo modo: random.shuffle(simulation) . Questo mescolerà la lista, non è necessario memorizzare il valore poiché la lista viene modificata direttamente. Crea una lista chiamata sample per memorizzare il valore di random.sample(), aggiungi la lista simulation come primo argomento e, come secondo argomento, preleva un campione di 3 elementi per ottenere tre (3) elementi casuali come campione, in questo modo: sample = random.sample(simulation, k=3). Utilizza simulation e sample con la funzione write() pre-scritta per registrare i nuovi campioni.

Infine, dirigiti verso il segno X scuro sul tappeto viola e fronteggia il banco, crea una variabile chiamata defect e memorizza il risultato di random.uniform(), aggiungi gli argomenti 3 e 10. Questi sono i valori di campionamento per la simulazione originale e per il campione prelevato, li useremo per generare potenziali margini di guasto delle attrezzature dal campione che abbiamo prelevato.

Crea una variabile chiamata losses e memorizza il valore di random.triangular(), aggiungi i valori 200, 600 e 400. Questi sono i numeri dei materiali indicati nel promemoria precedente, nello specifico il valore più basso, quello più alto e il valore più vicino alla mediana. Questo ci permette di ottenere un valore casuale triangolare basato sul numero di materiali utilizzati nella simulazione. Utilizza i valori defect e losses insieme alla funzione write() pre-scritta per ottenere i risultati e completare il livello.

Libro del Codice