# 1. Buat simulasi untuk distribusi diskrit dan distribusi kontinu.
# Dist. Binomial (Diskrit) : Melempar koin 1000 kali
percobaan <- 1000 # Jumlah percobaan
n <- 10 # Jumlah pelemparan koin dalam satu percobaan
p_angka <- 0.5 # Probabilitas dapat angka
data_binom <- rbinom(percobaan, size = n, prob = p_angka)
# Plot histogram
hist(data_binom, breaks = 30, main = "Histogram Distribusi Binomial", xlab = "Jumlah Angka", col = "brown")

# Dist. Normal (Kontinu) :
m_tinggi <- 165 # Rata-rata tinggi badan (cm)
sd_tinggi <- 10 # Standar deviasi tinggi badan (cm)
n <- 1000 # Jumlah mahasiswa yang disimulasi
data_norm <- rnorm(n, mean = m_tinggi, sd = sd_tinggi)
# Plot histogram
hist(data_norm, breaks = 10, main = "Histogram Distribusi Normal", xlab = "Tinggi Badan (cm)", col = "red")

# 2. Buat studi kasus sendiri yang melibatkan simulasi variabel random dari distribusi yang telah dipelajari.
# Dist. Seragam (Diskrit) : Sebuah kedai kopi kecil bernama "Kopi Nusantara" baru saja dibuka. Berdasarkan pengamatan pemiliknya, pelanggan datang secara acak sepanjang jam operasional, terutama di pagi hari. Asumsinya, kedatangan pelanggan terdistribusi secara seragam antara pukul 07.00 hingga 09.00 WIB. Artinya, peluang seorang pelanggan datang di setiap menit antara jam 7-9 adalah sama. Pemiliknya melakukan simulasi selama 30 hari untuk memperkirakan berbagai skenario dan membantu pengambilan keputusan operasional.
set.seed(1)
n <- 30 # simulasi 30 hari
waktu_min <- 0 # pukul 07.00 (0 menit)
waktu_maks <- 120 # pukul 09.00 (120 menit)
# Membangkitkan data dari distribusi seragam
data_waktu <- runif(n, min = waktu_min, max = waktu_maks)
data_waktu
## [1] 31.861040 44.654868 68.742404 108.984935 24.201832 107.806762
## [7] 113.361032 79.295735 75.493685 7.414352 24.716949 21.186810
## [13] 82.442742 46.092446 92.380970 59.723909 86.114221 119.028731
## [19] 45.604222 93.293427 112.164628 25.457103 78.200852 15.066612
## [25] 32.066480 46.333691 1.606840 45.886555 104.362901 40.841880
# Buat simulasi jam kedatangan pelanggan
menit_ke_jam <- function(menit) {
jam <- 7 + floor(menit / 60)
menit_sisa <- floor(menit %% 60)
sprintf("%02d:%02d", jam, menit_sisa)
}
waktu_datang <- sapply(data_waktu, menit_ke_jam)
waktu_datang
## [1] "07:31" "07:44" "08:08" "08:48" "07:24" "08:47" "08:53" "08:19" "08:15"
## [10] "07:07" "07:24" "07:21" "08:22" "07:46" "08:32" "07:59" "08:26" "08:59"
## [19] "07:45" "08:33" "08:52" "07:25" "08:18" "07:15" "07:32" "07:46" "07:01"
## [28] "07:45" "08:44" "07:40"
# 1. Rata-rata waktu kedatangan simulasi (dalam menit setelah jam 7)
round(mean(data_waktu),2)
## [1] 61.15
# 2. Peluang pelanggan datang di jam sibuk (07.30 - 08.30)
round(sum(data_waktu >= 30 & data_waktu <= 90) / n, 4)
## [1] 0.5
# 3. Visualisasi distribusi waktu kedatangan
hist(data_waktu,
col = "skyblue",
main = "Distribusi Waktu Kedatangan Pelanggan (30 Hari)",
xlab = "Waktu (menit setelah jam 07.00)",
ylab = "Frekuensi",
xlim = c(0, 120))

# 4. Berapa nilai kepadatan peluang (PDF) pada menit ke-60 (pukul 08.00)? Gunakan fungsi dunif(x, min, max) untuk menghitung tinggi fungsi kepadatan peluang pada suatu titik x
dunif(60, min = waktu_min, max = waktu_maks)
## [1] 0.008333333
# 5. Berapa peluang seorang pelanggan datang setelah pukul 8.30? Gunakan fungsi punif(q, min, max) memberikan peluang bahwa variabel acak kurang dari atau sama dengan q
1 - punif(90, min = 0, max = 120)
## [1] 0.25
# 3. Pemilik ingin memberikan promosi "Early Bird" untuk 30% pelanggan yang datang paling awal. 30% pelanggan pertama datang sebelum menit ke? Gunakan fungsi qunif(p, min, max) untuk mencari nilai x (waktu) yang sesuai dengan peluang kumulatif tertentu
qunif(0.3, min = 0, max = 120)
## [1] 36