Bab 4 Bilangan Acak
//TODO: Di bab ini akan membahas cara membangkitkan bilangan acak di R
4.1 Pengertian Bilangan Acak
Bilangan acak (random number) adalah sekumpulan angka yang dihasilkan secara tidak terduga dan tidak memiliki pola tertentu. Bilangan acak sangat penting dalam berbagai bidang, seperti simulasi, permodelan statistik, kriptografi, dan permainan komputer. Dalam konteks statistika, bilangan acak sering digunakan untuk melakukan simulasi data, uji hipotesis, atau metode resampling seperti bootstrap.
Bilangan acak yang dihasilkan oleh komputer sebenarnya adalah bilangan pseudo-acak (pseudo-random), karena dihasilkan oleh algoritma deterministik yang memerlukan nilai awal (seed). Meskipun terlihat acak, bilangan ini dapat direproduksi jika nilai seed-nya diketahui dan ditentukan dengan nilai yang sama.
4.2 Pembangkitan Bilangan Acak Menggunakan R
R adalah bahasa pemrograman yang sangat powerful untuk analisis statistik dan komputasi numerik. R menyediakan berbagai fungsi untuk membangkitkan bilangan acak dari berbagai sebaran peluang. Berikut ini adalah beberapa sebaran acak dan fungsi dasar yang sering digunakan.
4.2.1 Fungsi set.seed()
Sebelum membangkitkan bilangan acak, penting untuk menetapkan nilai awal (seed
) agar hasil yang diperoleh dapat direproduksi. Function set.seed()
digunakan untuk menetapkan seed.
set.seed(123) # Menetapkan seed agar hasil dapat direproduksi
Nilai seed dapat berupa bilangan bulat yang lebih dari nol. Jika nilai seed ditentukan sebagai nol (0) maka setiap kali menjalankan proses yang melibatkan pembuatan bilangan acak atau pengambilan contoh acak (random sampling) akan memberikan hasil yang berbeda. Jika nilai seed bernilai > 0 dan proses pembangkitan bilangan acak atau pengambilan contoh acak dilakukan mulai dari function set.seed()
maka akan menghasilkan nilai/output yang sama.
4.2.2 Sebaran Uniform dan runif()
Fungsi runif()
digunakan untuk membangkitkan bilangan acak dari sebaran uniform (seragam) dalam interval tertentu. Secara default, intervalnya adalah [0, 1]. Membaca fungsi tersebut adalah r-unif
, bukan run-if
.
# Membangkitkan 5 bilangan acak dari sebaran uniform
bilangan_acak <- runif(n = 5)
print(bilangan_acak)
## [1] 0.2875775 0.7883051 0.4089769 0.8830174 0.9404673
Jika ingin menggunakan interval yang berbeda dari defaul [0, 1] maka kita dapat menggunakan argumen min
dan max
.
## [1] 11.82226 31.12422 45.69676 32.05740 28.26459
4.2.3 Sebaran Normal dan rnorm()
Fungsi rnorm()
digunakan untuk membangkitkan bilangan acak dari sebaran Normal (Gaussian) dengan mean dan standar deviasi tertentu.
# Membangkitkan 5 (n = 5) bilangan acak dari
# sebaran Normal dengan mean = 0 dan sd = 1
bilangan_acak_normal <- rnorm(n = 5, mean = 0, sd = 1)
print(bilangan_acak_normal)
## [1] 1.7150650 0.4609162 -1.2650612 -0.6868529 -0.4456620
4.2.4 Sebaran Binomial dan rbinom()
Sebaran Binomial adalah sebaran peluang diskrit yang menggambarkan jumlah keberhasilan dalam sejumlah percobaan independen dengan peluang sukses yang sama. Fungsi rbinom()
digunakan untuk membangkitkan bilangan acak dari distribusi binomial.
Parameter:
-
n: Banyaknya percobaan.
-
size: Jumlah percobaan independen.
- prob: Peluang sukses dalam setiap percobaan.
# Membangkitkan 10 bilangan acak dari
# sebaran Binomial dengan 5 percobaan dan
# peluang sukses 0.5
set.seed(123)
bilangan_acak_binomial <- rbinom(n = 10, size = 5, prob = 0.5)
print(bilangan_acak_binomial)
## [1] 2 3 2 4 4 1 3 4 3 2
4.2.5 Sebaran Poisson dan rpois()
Sebaran Poisson adalah sebaran peluang diskrit yang menggambarkan jumlah kejadian yang terjadi dalam interval waktu atau ruang tertentu. Fungsi rpois()
digunakan untuk membangkitkan bilangan acak dari sebaran Poisson.
Parameter:
-
n: banyaknya bilangan acak yang ingin dibangkitkan.
- lambda: Rata-rata jumlah kejadian dalam interval.
# Membangkitkan 10 bilangan acak dari
# sebaran Poisson dengan lambda = 3
set.seed(123)
bilangan_acak_poisson <- rpois(10, lambda = 3)
print(bilangan_acak_poisson)
## [1] 2 4 2 5 6 0 3 5 3 3
4.2.6 Sebaran Gamma da rgamma()
Sebaran Gamma adalah sebaran peluang kontinu yang sering digunakan untuk memodelkan waktu tunggu hingga kejadian tertentu terjadi. Fungsi rgamma()
digunakan untuk membangkitkan bilangan acak dari sebaran Gamma.
Parameter:
-
n: Banyaknya bilangan acak yang ingin dibangkitkan.
-
shape: Parameter bentuk (shape parameter).
-
rate: Parameter rate (kebalikan dari scale).
- scale: Parameter scale (kebalikan dari rate).
# Membangkitkan 10 bilangan acak dari
# sebaran Gamma dengan shape = 2 dan rate = 1
set.seed(123)
bilangan_acak_gamma <- rgamma(n = 10, shape = 2, rate = 1)
print(bilangan_acak_gamma)
## [1] 0.8920936 3.3118474 0.1443750 1.6625233 4.3358790 2.1176157 0.3507177
## [8] 0.1304001 3.3737820 1.9730466
4.2.7 Pengambilan Contoh Acak dan sample()
Fungsi sample()
digunakan untuk mengambil contoh (sample) acak dari suatu vector. Fungsi ini sangat berguna untuk pengambilan contoh tanpa pengembalian (without replacement) atau dengan pengembalian (with replacement).
# Mengambil 3 contoh acak dari vector 1 sampai 10 tanpa pengembalian
set.seed(123)
sampel_acak <- sample(x = 1:10, size = 3, replace = FALSE)
print(sampel_acak)
## [1] 3 10 2
3.3 Contoh Aplikasi Bilangan Acak dalam Simulasi Bilangan acak sering digunakan dalam simulasi untuk memodelkan fenomena dunia nyata. Berikut adalah contoh sederhana simulasi pelemparan dadu menggunakan R:
# Simulasi pelemparan dadu sebanyak 10 kali
set.seed(123) # Menetapkan seed untuk reproduksi hasil
hasil_dadu <- sample(1:6, 10, replace = TRUE)
print(hasil_dadu)
## [1] 3 6 3 2 2 6 3 5 4 6
Hasil dari kode di atas akan menghasilkan 10 bilangan acak yang merepresentasikan hasil pelemparan dadu.
3.4 Visualisasi Sebaran Bilangan Acak
Untuk memahami sebaran bilangan acak yang dihasilkan, kita dapat menggunakan visualisasi. Berikut adalah contoh visualisasi sebaran normal menggunakan histogram:
# Membangkitkan 1000 bilangan acak dari sebaran normal
set.seed(123)
bilangan_acak_normal <- rnorm(n = 1000, mean = 0, sd = 1)
# Membuat histogram
hist(x = bilangan_acak_normal,
breaks = 30,
main = "Histogram Sebaran Normal",
xlab = "Nilai", col = "lightblue")

Histogram ini akan menunjukkan bentuk sebaran Normal dari bilangan acak yang dihasilkan. Berikut ini cara membangkitkan 1000 bilangan acak dari sebaran Binomial, Poisson, dan Gamma serta visualisasi sebarannya menggunakan Histogram.
# Membangkitkan 1000 bilangan acak dari sebaran Binomial
set.seed(123)
bilangan_acak_binomial <- rbinom(n = 1000, size = 10, prob = 0.5)
# Membuat histogram
hist(x = bilangan_acak_binomial,
breaks = 10,
main = "Histogram Sebaran Binomial",
xlab = "Nilai", col = "lightgreen")

# Membangkitkan 1000 bilangan acak dari sebaran Poisson
set.seed(123)
bilangan_acak_poisson <- rpois(n = 1000, lambda = 3)
# Membuat histogram
hist(x = bilangan_acak_poisson,
breaks = 10,
main = "Histogram Sebaran Poisson",
xlab = "Nilai", col = "lightpink")

# Membangkitkan 1000 bilangan acak dari sebaran Gamma
set.seed(123)
bilangan_acak_gamma <- rgamma(n = 1000, shape = 2, rate = 1)
# Membuat histogram
hist(x = bilangan_acak_gamma,
breaks = 30,
main = "Histogram Sebaran Gamma",
xlab = "Nilai", col = "lightyellow")
