tabel_permintaan <- data.frame(
permintaan = c(50, 60, 70, 80, 90),
probabilitas = c(0.1, 0.2, 0.4, 0.2, 0.1)
)
print(tabel_permintaan)
## permintaan probabilitas
## 1 50 0.1
## 2 60 0.2
## 3 70 0.4
## 4 80 0.2
## 5 90 0.1
nilai_ekspektasi <- sum(
tabel_permintaan$permintaan * tabel_permintaan$probabilitas
)
permintaan_simulasi <- function(n, tabel){
kumulatif <- cumsum(tabel$probabilitas)
u <- runif(n)
hasil <- numeric(n)
for(i in 1:n){
for(j in 1:length(kumulatif)){
if(u[i] <= kumulatif[j]){
hasil[i] <- tabel$permintaan[j]
break
}
}
}
return(data.frame(prediksi_permintaan = hasil))
}
set.seed(1000)
sim_1000 <- permintaan_simulasi(1000, tabel_permintaan)
cat("\n=== Frekuensi ===\n")
##
## === Frekuensi ===
table(sim_1000$prediksi_permintaan)
##
## 50 60 70 80 90
## 104 188 407 205 96
mean_1000 <- mean(sim_1000$prediksi_permintaan)
cat("\nRata-rata:", mean_1000, "\n")
##
## Rata-rata: 70.01
set.seed(5000)
mean_5000 <- mean(permintaan_simulasi(5000, tabel_permintaan)$prediksi_permintaan)
set.seed(20000)
mean_20000 <- mean(permintaan_simulasi(20000, tabel_permintaan)$prediksi_permintaan)
cat("\n=== Perbandingan ===\n")
##
## === Perbandingan ===
cat("1000 :", mean_1000, "\n")
## 1000 : 70.01
cat("5000 :", mean_5000, "\n")
## 5000 : 69.834
cat("20000:", mean_20000, "\n")
## 20000: 69.9485
cat("\n=== Selisih dari Ekspektasi (70) ===\n")
##
## === Selisih dari Ekspektasi (70) ===
cat("1000 :", abs(mean_1000 - nilai_ekspektasi), "\n")
## 1000 : 0.01
cat("5000 :", abs(mean_5000 - nilai_ekspektasi), "\n")
## 5000 : 0.166
cat("20000:", abs(mean_20000 - nilai_ekspektasi), "\n")
## 20000: 0.0515