Pseudorandomisasi kejadian dan metode

Simulasi Peristiwa Diskret dengan Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Randomisasi proses/kejadian

Apa itu randomisasi?

  • Proses membuat sesuatu acak
  • Di sini, membuat kejadian/proses menjadi acak
  • Berguna untuk mensimulasikan proses non-deterministik

Perlu dicatat: Komputer, secara desain, tidak mampu menghasilkan bilangan benar-benar acak.

  • Waktu saat ini dan variabel eksternal lain sering dipakai untuk meningkatkan keacakan generator.
Simulasi Peristiwa Diskret dengan Python

Acak vs. pseudorandom

Generasi acak "sejati"

  • Bilangan benar-benar acak
  • Keacakan dibatasi oleh keterbatasan mesin

Generasi pseudorandom

  • Bilangan dihasilkan berdasar distribusi probabilitas
  • Pola distribusi terlihat saat sampel bertambah

Contoh: Pabrik dengan tugas perakitan manual

Plot sebar menampilkan durasi suatu perakitan manual saat diulang berkali-kali.

  • Distribusi probabilitas lebih tepat untuk menghasilkan kejadian berikutnya secara pseudorandom
Simulasi Peristiwa Diskret dengan Python

Paket untuk pseudorandomisasi

Beberapa paket statistik yang dapat digunakan:

  • NumPy
  • SciPy
  • statsmodels
  • pandas
  • Random
  • scikit-learn

Paket Random

  • Menghasilkan angka acak dan pseudorandom

Fokus kita

  • Metode yang umum pada model kejadian-diskrit
Simulasi Peristiwa Diskret dengan Python

Bilangan acak dalam rentang tertentu

Bilangan bulat acak dalam rentang tertentu

Metode:

random.randint(start, end)

Contoh: Bilangan bulat acak antara 3 (inkl.) dan 9 (ekskl.)

random.randint(3, 9)
5

Bilangan float acak dalam rentang tertentu

Metode:

random.uniform(start, end)

Contoh: Bilangan float acak antara 3 dan 9

random.uniform(3, 9)
6.4557754
Simulasi Peristiwa Diskret dengan Python

Sampel acak dan urutan

Sampel acak dari suatu urutan

Metode:

random.sample(mylist, k=number_samples)

Contoh: 2 elemen acak dari daftar

mylist = ["apple", "banana", "cherry"]
random.sample(mylist, k=2)
['cherry', 'banana']

Acak-acak daftar (ubah urutan elemen)

Metode:

random.shuffle(mylist)

Contoh: Pengacakan ulang elemen daftar

mylist = ["book", "pencil", "eraser"]
random.shuffle(mylist)
['eraser', 'pencil', 'book']
Simulasi Peristiwa Diskret dengan Python

Distribusi Gaussian dan eksponensial

Distribusi Gaussian

Metode:

random.gauss(average, standard_dev)

Contoh: Float pseudorandom dengan mean 100 dan simpangan baku 50

random.gauss(100, 50)
123.59383

Distribusi eksponensial

Metode:

random.expovariate(lambda)
  • jika lambda>0, hasil [0, infinity]
  • jika lambda<0, hasil [-infinity, 0]

Contoh: Float pseudorandom dengan distribusi eksponensial dan lambda 1.5: random.expovariate(1.5)

0.2234355
Simulasi Peristiwa Diskret dengan Python

Ayo berlatih!

Simulasi Peristiwa Diskret dengan Python

Preparing Video For Download...