tabel_permintaan <- data.frame(
permintaan = c(50, 60, 70, 80, 90),
batas_bawah = c(1, 21, 51, 86, 96),
batas_atas = c(20, 50, 85, 95, 100)
)
permintaan_simulasi <- function(n, tabel_permintaan) {
bilangan_acak <- sample(1:100, n, replace = TRUE)
get_demand <- function(x) {
index <- which(x >= tabel_permintaan$batas_bawah & x <= tabel_permintaan$batas_atas)
if (length(index) == 0) {
return(NA)
} else {
return(tabel_permintaan$permintaan[index])
}
}
prediksi_permintaan <- sapply(bilangan_acak, get_demand)
result <- data.frame(
bilangan_acak = bilangan_acak,
prediksi_permintaan = prediksi_permintaan
)
result <- na.omit(result)
return(result)
}
set.seed(123)
sim_1000 <- permintaan_simulasi(1000, tabel_permintaan)
sim_5000 <- permintaan_simulasi(5000, tabel_permintaan)
sim_20000 <- permintaan_simulasi(20000, tabel_permintaan)
rata_1000 <- mean(sim_1000$prediksi_permintaan)
rata_5000 <- mean(sim_5000$prediksi_permintaan)
rata_20000 <- mean(sim_20000$prediksi_permintaan)
cat("Rata-rata 1.000 simulasi :", rata_1000, "\n")
## Rata-rata 1.000 simulasi : 65.22
cat("Rata-rata 5.000 simulasi :", rata_5000, "\n")
## Rata-rata 5.000 simulasi : 64.812
cat("Rata-rata 20.000 simulasi:", rata_20000, "\n")
## Rata-rata 20.000 simulasi: 64.9585
Interpretasi Kode R:
Sebagai kesimpulan, kode Simulasi Monte Carlo tersebut dirancang untuk menguji kestabilan prediksi permintaan melalui pembangkitan bilangan acak secara berulang, di mana peningkatan jumlah iterasi (dari 1.000 hingga 20.000) akan membuat hasil rata-rata simulasi semakin konvergen dan akurat. Sesuai dengan Hukum Bilangan Besar (Law of Large Numbers), semakin banyak pengulangan yang dilakukan di dalam model, simpangan atau fluktuasi acak akan semakin mengecil, sehingga nilai rata-rata yang dicetak pada iterasi 20.000 akan menjadi estimasi yang paling stabil dan paling mendekati probabilitas kejadian aslinya.