set.seed(123) #set seed untuk reproducibility
# SIMULASI UNTUK DISTRIBUSI DISKRIT - BINOMIAL
# Studi Kasus:
# Peluang produk lolos QC = 0.7, Dalam sehari diuji 20 produk, Disimulasikan untuk 1000 hari

n_sim <- 1000
n_produk <- 20
p_lolos <- 0.7

binom_data <- rbinom(n_sim, size = n_produk, prob = p_lolos)

mean_binom <- mean(binom_data)
sd_binom <- sd(binom_data)
prob_more_18 <- sum(binom_data > 18)/n_sim

cat("DISTRIBUSI BINOMIAL\n")
## DISTRIBUSI BINOMIAL
cat("Rata-rata produk lolos QC:", mean_binom, "\n")
## Rata-rata produk lolos QC: 14.017
cat("Standar deviasi:", sd_binom, "\n")
## Standar deviasi: 2.045212
cat("Probabilitas lebih dari 18 produk lolos:", prob_more_18, "\n\n")
## Probabilitas lebih dari 18 produk lolos: 0.009
cat("INTERPRETASI:\n")
## INTERPRETASI:
cat("Rata-rata simulasi mendekati nilai teoritis n*p yaitu 20*0.7 = 14.\n")
## Rata-rata simulasi mendekati nilai teoritis n*p yaitu 20*0.7 = 14.
cat("Hal ini menunjukkan bahwa hasil simulasi konsisten dengan konsep distribusi binomial.\n")
## Hal ini menunjukkan bahwa hasil simulasi konsisten dengan konsep distribusi binomial.
cat("Probabilitas lebih dari 18 produk lolos relatif kecil, yang berarti kondisi hampir sempurna jarang terjadi.\n\n")
## Probabilitas lebih dari 18 produk lolos relatif kecil, yang berarti kondisi hampir sempurna jarang terjadi.
hist(binom_data,
     main="Simulasi Binomial (QC Produk)",
     xlab="Jumlah Produk Lolos",
     col="lightGREY")

# SIMULASI UNTUK DISTRIBUSI KONTINU - NORMAL
# Studi Kasus:
# Waktu pengerjaan ujian ~ N(90, 15), Simulasi 500 mahasiswa

n_mahasiswa <- 500
mean_time <- 90
sd_time <- 15

normal_data <- rnorm(n_mahasiswa, mean = mean_time, sd = sd_time)

mean_normal <- mean(normal_data)
sd_normal <- sd(normal_data)
prob_more_120 <- sum(normal_data > 120)/n_mahasiswa

cat("DISTRIBUSI NORMAL\n")
## DISTRIBUSI NORMAL
cat("Rata-rata waktu pengerjaan:", mean_normal, "\n")
## Rata-rata waktu pengerjaan: 89.96498
cat("Standar deviasi:", sd_normal, "\n")
## Standar deviasi: 15.16355
cat("Probabilitas waktu > 120 menit:", prob_more_120, "\n\n")
## Probabilitas waktu > 120 menit: 0.03
cat("INTERPRETASI:\n")
## INTERPRETASI:
cat("Rata-rata hasil simulasi mendekati parameter teoritis yaitu 90 menit.\n")
## Rata-rata hasil simulasi mendekati parameter teoritis yaitu 90 menit.
cat("Distribusi terlihat simetris dan berbentuk lonceng, sesuai karakteristik distribusi normal.\n")
## Distribusi terlihat simetris dan berbentuk lonceng, sesuai karakteristik distribusi normal.
cat("Probabilitas mahasiswa membutuhkan waktu lebih dari 120 menit relatif kecil,\n")
## Probabilitas mahasiswa membutuhkan waktu lebih dari 120 menit relatif kecil,
cat("menunjukkan hanya sebagian kecil mahasiswa yang membutuhkan waktu sangat lama.\n\n")
## menunjukkan hanya sebagian kecil mahasiswa yang membutuhkan waktu sangat lama.
hist(normal_data,
     main="Simulasi Waktu Ujian (Normal)",
     xlab="Waktu (menit)",
     col="lightblue")

# SIMULASI DISTRIBUSI KONTINU - EKSPONENSIAL
# Studi Kasus:
# Rata-rata waktu tunggu di bank = 5 menit, Simulasi 1000 pelanggan

rate_wait <- 1/5
n_customers <- 1000

exp_data <- rexp(n_customers, rate = rate_wait)

mean_exp <- mean(exp_data)
prob_more_10 <- sum(exp_data > 10)/n_customers

cat("DISTRIBUSI EKSPONENSIAL\n")
## DISTRIBUSI EKSPONENSIAL
cat("Rata-rata waktu tunggu:", mean_exp, "\n")
## Rata-rata waktu tunggu: 4.918475
cat("Probabilitas waktu tunggu > 10 menit:", prob_more_10, "\n\n")
## Probabilitas waktu tunggu > 10 menit: 0.132
cat("INTERPRETASI:\n")
## INTERPRETASI:
cat("Rata-rata simulasi mendekati nilai teoritis distribusi eksponensial yaitu 1/rate = 5 menit.\n")
## Rata-rata simulasi mendekati nilai teoritis distribusi eksponensial yaitu 1/rate = 5 menit.
cat("Distribusi berbentuk miring ke kanan, yang menunjukkan sebagian besar pelanggan menunggu dalam waktu singkat.\n")
## Distribusi berbentuk miring ke kanan, yang menunjukkan sebagian besar pelanggan menunggu dalam waktu singkat.
cat("Namun, terdapat kemungkinan kecil pelanggan menunggu cukup lama (>10 menit).\n")
## Namun, terdapat kemungkinan kecil pelanggan menunggu cukup lama (>10 menit).
hist(exp_data,
     main="Simulasi Waktu Tunggu Bank (Eksponensial)",
     xlab="Waktu Tunggu (menit)",
     col="lightcoral")