Setelah uniform dan normal yang menghasilkan angka kontinu, ada dua distribusi untuk bilangan bulat hasil penghitungan (count). Keduanya menjawab pertanyaan berbeda: binomial menghitung keberhasilan dari sejumlah percobaan tetap, sedangkan Poisson menghitung kejadian dalam satu interval waktu atau ruang. NumPy menyediakannya sebagai rng.binomial() dan rng.poisson() pada Generator.

Contoh klasik binomial: pemain lempar bebas dengan tingkat keberhasilan 80% melempar sepuluh kali — berapa lemparan yang masuk? Contoh klasik Poisson: call center yang rata-rata menerima 12 panggilan per jam — berapa panggilan pada jam berikutnya? Dua pertanyaan itu terlihat mirip, tetapi parameternya berbeda dan kita akan melihat alasannya.

Binomial: Menghitung Keberhasilan dari n Percobaan #

Method rng.binomial(n, p, size) mensimulasikan n percobaan independen yang masing-masing sukses dengan peluang p, lalu mengembalikan jumlah keberhasilan — bukan daftar sukses/gagal per percobaan:

python
import numpy as np

rng = np.random.default_rng(42)
satu_sesi = rng.binomial(n=10, p=0.8)
print(satu_sesi)
sepekan = rng.binomial(n=10, p=0.8, size=7)
print(sepekan)

Output yang Dihasilkan:

text
7
[ 8  7  7 10  5  7  7]

Bedah baris demi baris:

  1. Baris 4 (satu_sesi = rng.binomial(n=10, p=0.8)): tanpa size, method menjalankan satu rangkaian 10 percobaan dan mengembalikan satu bilangan bulat — pemain mencetak 7 keberhasilan dari 10 lemparan.
  2. Baris 6 (sepekan = ...): size=7 mengulang simulasi tujuh kali, sehingga hasilnya array dengan tujuh elemen; tiap elemen adalah total keberhasilan satu sesi.
  3. Perhatikan sesi keempat bernilai 10 (semua lemparan masuk) dan sesi kelima hanya 5 — variasi seperti ini wajar untuk kejadian acak.

Sekarang kita periksa dua klaim teoretis pada 10.000 sesi: rata-rata keberhasilan mendekati n * p, dan frekuensi tepat 8 keberhasilan mendekati nilai teorinya (≈ 0,302):

python
import numpy as np

rng = np.random.default_rng(42)
hasil = rng.binomial(n=10, p=0.8, size=10_000)
print("Rata-rata simulasi :", round(float(hasil.mean()), 2))
print("Ekspektasi teori   :", 10 * 0.8)
print("Frekuensi tepat 8  :", round(float(np.mean(hasil == 8)), 4))

Output yang Dihasilkan:

text
Rata-rata simulasi : 8.01
Ekspektasi teori   : 8.0
Frekuensi tepat 8  : 0.3047

Rata-rata empiris 8,01 praktis bertemu dengan ekspektasi n × p = 8. Nilai p harus berada di antara 0 dan 1; nilai di luar rentang itu langsung memunculkan ValueError.

Poisson: Menghitung Kejadian per Interval #

Poisson tidak mengenal jumlah percobaan n. Distribusi ini memodelkan jumlah kejadian dalam satu interval ketika kita hanya tahu rata-rata laju kejadiannya. Method rng.poisson(lam, size) memakai satu parameter utama, lam (λ), yaitu rata-rata kejadian per interval:

python
import numpy as np

rng = np.random.default_rng(0)
satu_hari = rng.poisson(lam=12, size=8)
print("8 jam pertama   :", satu_hari)
banyak = rng.poisson(lam=12, size=10_000)
print("Rata-rata simulasi :", round(float(banyak.mean()), 2))
print("Std simulasi       :", round(float(banyak.std()), 2))

Output yang Dihasilkan:

text
8 jam pertama   : [13  3 13 16 16 14 16 10]
Rata-rata simulasi : 12.03
Std simulasi       : 3.45

Bedah baris demi baris:

  1. Baris 4 (satu_hari = ...): size=8 membangkitkan jumlah panggilan untuk delapan jam kerja; jam kedua hanya 3 panggilan padahal rata-ratanya 12 — lonjakan turun seperti ini khas Poisson.
  2. Baris 6 (banyak = ...): 10.000 jam simulasi memberi gambaran jangka panjang.
  3. Baris 7-8: rata-rata empiris 12,03 mendekati lam=12, dan std empiris 3,45 mendekati akar kuadrat dari lam (≈ 3,46) — sifat khusus Poisson yang bisa dipakai untuk mengecek hasil simulasi.

Hasil Poisson tidak punya batas atas: satu jam bisa mencatat 16, bahkan lebih, karena hanya laju rata-ratanya yang ditetapkan.

Kapan Memakai yang Mana #

Pembeda utamanya adalah bentuk pertanyaan yang dijawab:

DistribusiParameterPertanyaan yang dijawab
Binomialn (jumlah percobaan), p (peluang sukses per percobaan)“Dari n percobaan tetap, berapa banyak yang sukses?”
Poissonlam (rata-rata kejadian per interval)“Berapa banyak kejadian dalam satu interval waktu/ruang?”

Gunakan checklist berikut sebelum memilih:

  • Binomial cocok bila jumlah percobaan diketahui dan tetap (10 lemparan, 100 pelanggan yang ditawari produk), dengan hasil tiap percobaan hanya dua kemungkinan: sukses atau gagal.
  • Poisson cocok bila yang dihitung adalah kejadian pada interval kontinu (panggilan per jam, typo per halaman, kendaraan per menit) dan jumlah maksimalnya tidak tetap.

Distribusi hitungan seperti ini menjadi bahan baku simulasi yang lebih besar — Chapter Simulasi Monte Carlo di akhir section ini memperlihatkan cara memanfaatkannya untuk mengestimasi nilai yang sulit dihitung langsung.