Generasi bilangan semu-acak

Sampling di Python

James Chapman

Curriculum Manager, DataCamp

Apa arti acak?

{adjective} dibuat, dilakukan, terjadi, atau dipilih tanpa metode atau keputusan sadar.

1 Oxford Languages
Sampling di Python

Bilangan acak sejati

  • Dihasilkan dari proses fisik, seperti melempar koin
  • Hotbits menggunakan peluruhan radioaktif
  • RANDOM.ORG menggunakan derau atmosfer
  • Keacakan sejati mahal
1 https://www.fourmilab.ch/hotbits 2 https://www.random.org
Sampling di Python

Generasi bilangan semu-acak

  • Pembuatan bilangan semu-acak itu murah dan cepat
  • Bilangan "acak" berikutnya dihitung dari bilangan "acak" sebelumnya
  • Bilangan "acak" pertama dihitung dari sebuah seed
  • Seed yang sama menghasilkan bilangan acak yang sama
Sampling di Python

Contoh generasi semu-acak

seed = 1
calc_next_random(seed)
3
calc_next_random(3)
2
calc_next_random(2)
6
Sampling di Python

Fungsi pembangkit bilangan acak

  • Tambahkan awalan numpy.random, mis. numpy.random.beta()
function distribution function distribution
.beta Beta .hypergeometric Hipergeometrik
.binomial Binomial .lognormal Lognormal
.chisquare Kai-kuadrat .negative_binomial Binomial negatif
.exponential Eksponensial .normal Normal
.f F .poisson Poisson
.gamma Gamma .standard_t t baku
.geometric Geometrik .uniform Uniform
Sampling di Python

Memvisualisasikan bilangan acak

randoms = np.random.beta(a=2, b=2, size=5000)
randoms
array([0.6208281 , 0.73216171, 0.44298403, ..., 
       0.13411873, 0.52198411, 0.72355098])
plt.hist(randoms, bins=np.arange(0, 1, 0.05))
plt.show()

histogram sebaran beta

Sampling di Python

Seed bilangan acak

np.random.seed(20000229)
np.random.normal(loc=2, scale=1.5, size=2)
array([-0.59030264, 1.87821258])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.52619561, 4.9684949 ])
np.random.seed(20000229)
np.random.normal(loc=2, scale=1.5, size=2)
array([-0.59030264, 1.87821258])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.52619561, 4.9684949 ])
Sampling di Python

Menggunakan seed lain

np.random.seed(20000229)
np.random.normal(loc=2, scale=1.5, size=2)
array([-0.59030264, 1.87821258])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.52619561, 4.9684949 ])
np.random.seed(20041004)
np.random.normal(loc=2, scale=1.5, size=2)
array([1.09364337, 4.55285159])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.67038916, 2.36677492])
Sampling di Python

Ayo berlatih!

Sampling di Python

Preparing Video For Download...