Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat
Modul Matematika
Modul Acak
Tujuan
Jalankan simulasi dan pengujian untuk mempersiapkan kemungkinan kesalahan dan hambatan selama pembangunan lahan pertanian dengan menggunakan modul random.
Menyebrang unit tambahan, terdapat sebuah kantor yang menangani beberapa tugas administratif seputar pengurusan dokumen terkait pengiriman, perumahan, dan logistik untuk pembangunan. Akan menjadi ide yang baik untuk menjalankan beberapa skenario menggunakan data yang tersedia guna menghitung hambatan dan kegagalan peralatan. Untuk membantu hal ini, kita memiliki modul random, yang diaktifkan dengan import random .
Modul ini digunakan untuk menghasilkan keluaran acak dalam berbagai tingkat, memungkinkan Anda menjalankan simulasi atau menambahkan elemen acak ke dalam perhitungan/latihan Anda. Untuk tujuan kita, kita akan menggunakan fungsi-fungsi berikut:
random.seed(): Mengatur seed untuk generasi acak, mengambil satu argumen yaitu nomor seed yang ingin Anda gunakan. Ini berarti setiap fungsi acak yang digunakan dengan seed tertentu akan menghasilkan hasil yang sama saat digunakan. Ini digunakan untuk memberikan kontrol atas generasi acak dan memungkinkan untuk mereproduksi hasil tertentu.random.random(): Mengembalikan angka float acak antara0dan1.random.randint(): Mengambil dua argumen, menghasilkan angka antara kedua argumen tersebut, termasuk angka itu sendiri. Hasilnya dikembalikan dalam angka bulat/integer.random.uniform(): Sama seperti fungsi sebelumnya tetapi mengembalikan angka float acak daripada integer.random.triangular(): Sama seperti fungsi sebelumnya tetapi memiliki argumen tambahan sebagai pengubah yang disebut mode. Mode tersebut harus merupakan angka antara kedua angka dalam rentang acak. Angka acak yang dihasilkan akan secara statistik lebih dekat ke mode daripada angka acak murni antara dua argumen pertama.random.choice(): Mengambil sebuah list sebagai argumen, memilih satu item dari list secara acak.random.choices(): Menghasilkan list acak yang disampling dari list lain, mengambil tiga argumen: sebuah list yang ingin Anda ambil sampelnya, list lain yang dapat Anda tentukan untuk menunjukkan bobot masing-masing item dalam list yang Anda sampling, dan terakhir sebuah variabel bernama k yang nilainya menentukan berapa banyak sampel yang ingin Anda ambil dari list tersebut. Jumlah sampel bisa lebih banyak dari jumlah item dalam list karena akan menghasilkan duplikasi berdasarkan bobot yang Anda tetapkan.random.shuffle(): Mengambil sebuah list sebagai argumen dan mengacaknya secara acak.random.sample(): Mengambil dua argumen, sebuah list untuk disampling dan jumlah sampel yang ingin Anda ambil. Versi sederhana darirandom.choices().
Untuk memulai, berjalanlah ke tanda X terang dan hadaplah meja, gunakan fungsi read() untuk membaca memo dan mengidentifikasi titik data yang diperlukan untuk menjalankan simulasi dengan variasi acak. Kita akan menjalankan simulasi kegagalan peralatan, memo tersebut akan memberi tahu Anda seed apa yang harus digunakan untuk generasi acak serta list yang disampling. Gunakan fungsi random.seed() dan masukkan nilai yang disediakan dalam memo.
Berjalanlah ke tanda X gelap di atas karpet biru dan hadaplah meja, kita memiliki sebuah list konstan bernama sectors yang berisi area-area lahan pertanian yang telah dijelaskan dalam memo sebelumnya. Buatlah variabel bernama selection untuk menyimpan nilai dari random.choice(), gunakan list konstan sectors untuk mengambil sampel dari list, seperti ini: selection = random.choice(sectors). Buat variabel lain bernama delay dan simpan nilai dari random.random() untuk mensimulasikan margin kesalahan yang disebabkan oleh keterlambatan.
Buat satu variabel lagi bernama defect dan simpan nilai dari random.randint() untuk menghasilkan persentase potensi kegagalan peralatan. Tambahkan argumen 0 dan 15 untuk menghasilkan persentase antara kedua angka tersebut. Setelah variabel selection, delay, dan defect telah disiapkan, gunakan fungsi write() yang telah ditulis sebelumnya dengan tiga variabel tersebut secara berurutan, untuk mencatat titik data yang dapat digunakan untuk menguji potensi masalah dalam pembangunan.
Berjalanlah ke tanda X emas dan gunakan fungsi read() untuk melanjutkan proyeksi, data dalam memo akan berisi informasi tentang material, kuantitas, dan data sampling. Kita akan menjalankan simulasi yang lebih besar menggunakan data dalam memo, termasuk sebuah list konstan bernama materials yang menyimpan jenis material yang dijelaskan dalam memo.
Berjalanlah ke tanda X gelap di atas karpet merah dan hadaplah meja. Buatlah sebuah list bernama weights dan simpan empat nilai angka yang terdapat dalam memo yang sesuai dengan material dalam urutan penyajiannya. Misalnya: weights = [400, 600 , -insert value-, -insert value-]
Buatlah variabel bernama simulation dan simpan nilai dari random.choices(), tambahkan list konstan materials, list weights yang telah Anda buat, dan sebuah list bernama k yang berisi unit sampling seperti yang dijelaskan dalam memo, seperti ini: simulation = random.choices(materials, weights , k = insert sampling units ). Gunakan variabel simulation dengan fungsi write() yang telah ditulis sebelumnya untuk mencatat data.
Berjalanlah ke tanda X gelap di atas karpet hijau dan hadaplah meja, gunakan fungsi random.shuffle() dengan list simulation yang telah Anda buat untuk mengocoknya, seperti ini: random.shuffle(simulation). Ini akan mengocok list tersebut, tidak perlu menyimpan nilainya karena fungsi ini memodifikasi list secara langsung. Buatlah sebuah list bernama sample untuk menyimpan nilai dari random.sample(), tambahkan list simulation sebagai argumen pertama dan untuk argumen kedua, ambil sampel sebanyak 3 untuk mengambil tiga item acak sebagai sampel, seperti ini: sample = random.sample(simulation, k=3). Gunakan variabel simulation dan sample dengan fungsi write() yang telah ditulis sebelumnya untuk mencatat sampel baru.
Akhirnya, berjalanlah ke tanda X gelap di atas karpet ungu dan hadaplah meja, buatlah variabel bernama defect dan simpan hasil dari random.uniform(), tambahkan argumen 3 dan 10. Ini adalah nilai sampling untuk simulasi asli dan sampel yang diambil darinya, kita akan menggunakan ini untuk menghasilkan margin potensi cacat peralatan dari sampel yang kita ambil.
Buatlah variabel bernama losses dan simpan nilai dari random.triangular(), tambahkan nilai 200, 600 dan 400. Ini adalah angka material yang dijelaskan dalam memo sebelumnya, khususnya yang terendah, tertinggi, dan nilai yang paling mendekati tengah. Ini memungkinkan kita untuk mendapatkan nilai acak segitiga berdasarkan jumlah material yang digunakan dalam simulasi. Gunakan nilai defect dan losses dengan fungsi write() yang telah ditulis sebelumnya untuk mendapatkan hasil dan menyelesaikan level.