set.seed(42)
# 1: Simulasi Monte Carlo Dsar
permintaan <- c(50, 60, 70, 80, 90)
frekuensi <- c(10, 20, 40, 20, 10)
total_observasi <- sum(frekuensi)
probabilitas <- frekuensi / total_observasi
prob_kumulatif <- cumsum(probabilitas)
cat("--- Data Persiapan Monte Carlo ---\n")
## --- Data Persiapan Monte Carlo ---
cat("Probabilitas Kumulatif:", prob_kumulatif, "\n\n")
## Probabilitas Kumulatif: 0.1 0.3 0.7 0.9 1
simulasi_monte_carlo <- function(jumlah_hari) {
angka_acak <- runif(jumlah_hari)
hasil_prediksi <- c()
for (r in angka_acak) {
for (i in 1:length(prob_kumulatif)) {
if (r <= prob_kumulatif[i]) {
hasil_prediksi <- c(hasil_prediksi, permintaan[i])
break
}
}
}
return(hasil_prediksi)
}
cat("Prediksi 5 hari:", simulasi_monte_carlo(5), "\n")
## Prediksi 5 hari: 90 90 60 80 70
cat("Prediksi 20 hari:", simulasi_monte_carlo(20), "\n\n")
## Prediksi 20 hari: 70 80 60 70 80 70 80 90 60 70 90 90 60 70 70 90 60 90 90 50
# NOMOR 2: Bangkitan Data Sintesis
permintaan_dist <- as.integer(round(rexp(n = 10, rate = 1/70)))
frekuensi_dist <- rnorm(n = 10, mean = 20, sd = 5)
frekuensi_dist <- as.integer(round(abs(frekuensi_dist)))
prob_sintetis <- frekuensi_dist / sum(frekuensi_dist)
prob_kum_sintetis <- cumsum(prob_sintetis)
simulasi <- function(hari) {
angka_acak <- runif(hari)
indeks <- findInterval(angka_acak, prob_kum_sintetis) + 1
indeks[indeks > length(permintaan_dist)] <- length(permintaan_dist)
return(permintaan_dist[indeks])
}
cat("--- HASIL NOMOR 2 ---\n")
## --- HASIL NOMOR 2 ---
hari_test <- c(5, 20, 100, 1000)
for (d in hari_test) {
hasil <- simulasi(d)
cat(sprintf("Prediksi %d hari - Rata-rata Permintaan: %.2f\n", d, mean(hasil)))
}
## Prediksi 5 hari - Rata-rata Permintaan: 169.40
## Prediksi 20 hari - Rata-rata Permintaan: 49.90
## Prediksi 100 hari - Rata-rata Permintaan: 123.06
## Prediksi 1000 hari - Rata-rata Permintaan: 89.10