Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Matematické moduly
Náhodný modul
Cíl
Proveďte simulace a testy, abyste se připravili na případné chyby a komplikace během výstavby zemědělské půdy pomocí modulu random.
Při přejezdu anexou se nachází kancelář, která se stará o administrativní záležitosti spojené s vyřizováním papírování ohledně dopravy, ubytování a logistiky pro výstavbu. Bylo by dobré spustit několik scénářů s využitím dostupných dat k výpočtu zpoždění a selhání zařízení. K tomu nám pomáhá modul random, aktivovaný pomocí import random .
Modul se používá k generování náhodných výstupů v různých rozsazích, což vám umožní provozovat simulace nebo přidávat náhodné prvky do vašich výpočtů či cvičení. Pro naše účely budeme používat následující funkce:
random.seed(): Nastaví seed pro generování náhodných čísel, bere jeden argument – číslo seedu, které chcete použít. To znamená, že jakákoli náhodná funkce použitá se stejným seedem vrátí stejné výsledky při opakovaném použití. Používá se k ovládání generování náhodných čísel a k možnosti opakovat určité výsledky.random.random(): Vrátí náhodné desetinné číslo mezi0a1.random.randint(): Bere dva argumenty, generuje číslo mezi těmito dvěma hodnotami, včetně samotných čísel. Výsledek je vrácen jako celé číslo.random.uniform(): Stejné jako předchozí funkce, ale vrátí náhodné desetinné číslo místo celého čísla.random.triangular(): Stejné jako předchozí funkce, ale má navíc argument nazvaný mode jako modifikátor. Tento mód musí být číslo mezi těmito dvěma hodnotami v rozsahu. Náhodné číslo bude statisticky blíže módu, než aby bylo čistě náhodné mezi těmito dvěma argumenty.random.choice(): Bere seznam jako argument a náhodně vybere jednu položku ze seznamu.random.choices(): Generuje náhodně vzorkovaný seznam z jiného seznamu, bere tři argumenty: seznam, ze kterého chcete vzorkovat, další seznam, kterým určíte váhu pro výběr každé položky, a nakonec proměnnou pojmenovanou k, do které zadáte počet vzorků, které chcete ze seznamu získat. Počet vzorků může být větší než samotný seznam, protože mohou vznikat duplicity podle přiřazených vah.random.shuffle(): Bere seznam jako argument a náhodně ho zamíchá.random.sample(): Bere dva argumenty, seznam, ze kterého se má vzorkovat, a počet vzorků, které chcete získat. Jedná se o zjednodušenou verzi funkcerandom.choices().
Nejprve se vydejte ke světle označenému X a obraťte se ke stolu, použijte funkci read() pro přečtení poznámky a identifikaci datových bodů potřebných k provedení simulace s určitou náhodnou variabilitou. Budeme spouštět simulaci selhání zařízení, přičemž poznámka vám sdělí, jaký seed použít pro generování náhodných čísel a z kterého seznamu se má vzorkovat. Použijte funkci random.seed() a vložte hodnotu uvedenou v poznámce.
Vydejte se ke tmavému X umístěnému přes modrý koberec a obraťte se ke stolu. Máme zde konstantní seznam s názvem sectors, který obsahuje oblasti zemědělské půdy uvedené v předchozí poznámce. Vytvořte proměnnou s názvem selection, do které uložíte hodnotu funkce random.choice(), a použijte konstantní seznam sectors pro získání vzorku, například takto: selection = random.choice(sectors). Dále vytvořte proměnnou s názvem delay a uložte do ní hodnotu funkce random.random() k simulaci chyb způsobených zpožděními.
Vytvořte ještě jednu proměnnou s názvem defect a uložte do ní hodnotu funkce random.randint(), která vygeneruje procento potenciálního selhání zařízení. Jako argumenty použijte 0 a 15, aby bylo vygenerováno procento mezi těmito dvěma čísly. Jakmile budou proměnné selection, delay a defect nastaveny, použijte předem definovanou funkci write() s těmito třemi proměnnými v uvedeném pořadí k zaznamenání datových bodů, které lze využít pro testování potenciálních problémů při výstavbě.
Vydejte se ke zlatému X a použijte funkci read() k pokračování v projekcích, přičemž data v poznámce budou obsahovat materiály, množství a vzorkovací údaje. Budeme provádět rozsáhlejší simulaci s využitím dat z poznámky, která zahrnuje konstantní seznam nazvaný materials, obsahující typy materiálů uvedené v poznámce.
Vydejte se ke tmavému X umístěnému přes červený koberec a obraťte se ke stolu. Vytvořte seznam s názvem weights a uložte do něj čtyři číselné hodnoty uvedené v poznámce, odpovídající materiálům v pořadí, v jakém jsou uvedeny. Například: weights = [400, 600 , -insert value-, -insert value-]
Vytvořte proměnnou s názvem simulation a uložte do ní hodnotu funkce random.choices(). Jako argumenty přidejte konstantní seznam materials, vámi vytvořený seznam weights a proměnnou k, která obsahuje počet vzorkovacích jednotek uvedených v poznámce, například takto: simulation = random.choices(materials, weights , k = insert sampling units ). Použijte proměnnou simulation s předdefinovanou funkcí write() k zaznamenání dat.
Vydejte se ke tmavému X umístěnému přes zelený koberec a obraťte se ke stolu, použijte funkci random.shuffle() s vaším seznamem simulation k jeho zamíchání, například takto: random.shuffle(simulation). Tato funkce zamíchá seznam, není třeba ukládat výsledek, protože přímo mění původní seznam. Vytvořte seznam s názvem sample a uložte do něj hodnotu funkce random.sample(). Jako první argument použijte seznam simulation a jako druhý argument zadejte hodnotu 3, abyste získali tři náhodné položky jako vzorek, například takto: sample = random.sample(simulation, k=3). Použijte proměnné simulation a sample s předdefinovanou funkcí write() k zaznamenání nových vzorků.
Nakonec se vydejte ke tmavému X umístěnému přes fialový koberec a obraťte se ke stolu. Vytvořte proměnnou s názvem defect a uložte do ní výsledek funkce random.uniform(). Jako argumenty přidejte hodnoty 3 a 10. Tyto hodnoty představují vzorkovací hodnoty pro původní simulaci a z ní odebraný vzorek, které použijeme k vygenerování potenciálních mezí selhání zařízení z vybraného vzorku.
Vytvořte proměnnou s názvem losses a uložte do ní hodnotu funkce random.triangular(). Jako argumenty přidejte hodnoty 200, 600 a 400. Jedná se o čísla materiálů uvedená v předchozí poznámce – konkrétně nejnižší, nejvyšší a hodnotu nejblíže středu. Tím získáme trojúhelníkově rozloženou náhodnou hodnotu založenou na počtu materiálů použité při simulaci. Použijte hodnoty defect a losses s předdefinovanou funkcí write() k získání výsledků a dokončení úrovně.