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