Sebuah kelompok berisi 10 orang, terdapat 4 orang yang mahir dan 6 orang pemula. Kemudian akan dibentuk 5 anggota dengan dipilih secara acak.
Buat simulasi pemilihan tim sebanyak 1000 kali.
Hitung rata-rata jumlah anggota mahir dalam tim berdasarkan simulasi tersebut.
Gambarkan barchart hasil simulasi.
Membuat Fungsi SimulasiTim yang mendefinisikan aturan
dari satu kejadian pengambilan tim.
# Fungsi untuk simulasi pemilihan tim
SimulasiTim = function() {
kelompok = c(rep("Mahir", 4), rep("Pemula", 6)) # Mahir = 4, Pemula = 6
tim = sample(kelompok, 5, replace = FALSE)
return(sum(tim == "Mahir")) # Jumlah anggota mahir dalam tim
}
# Jalankan simulasi 1000 kali
set.seed(123)
hasil = replicate(1000, SimulasiTim())
rata_rata_mahir = mean(hasil)
cat("Rata-rata jumlah anggota mahir dalam tim:", rata_rata_mahir, "\n")
## Rata-rata jumlah anggota mahir dalam tim: 2.009
SimulasiTim = function() {...} membuat fungsi
bernama SimulasiTim dengan semua kode di dalam kurung
kurawal {...} merupakan tahapan yang akan dilakukan setiap
kali fungsi ini dipanggil.
kelompok = c(rep("Mahir", 4), rep("Pemula, 6))
membuar populasi data dengan fungsi rep("Mahir, 4) yang
mengulang kata “Mahir” sebanyak 4x dan rep("Pemula", 6)
sebanyak 6x.
tim = sample(kelompok, 5, replace = FALSE) melakukan
proses sampling, sample adalah fungsi yang mengambil 5
elemen secara acak dari vektor kelompok. Argumen
replace = FALSE melakukan pengambilan tanpa
pengembalian.
return(sum9tim == "Mahir")) memeriksa hasil dan
menampilkan nilai output fungsi
tim == Mahir" menghasilkan TRUE jika anggota
tersebut “Mahir” dan FALSE jika “Pemula”
sum(...) menjumlahkan nilai TRUE (bernilai 1) dan
FALSE (bernilai 0)
set.seed(123) hasil simulasi dikunci sehingga
konsisten dan dapat diproduksi ulang (reproducible).
hasil = replicate(1000, SimulasiTim()) melakukan
pengulangan atau replikasi dengan fungsi replicate
menjalankan SimulasiTim sebanyak 1000x. Hasil dari tiap
percobaan dengan jumlah orang “Mahir” di setiap tim disimpan di dalam
vektor hasil.
rata_rata_mahir = mean(hasil) menghitung rata-rata
dari 1000 hasil simulasi, ini merupakan hasil dari estimasi nilai
harapan.
cat("Rata-rata jumlah anggota mahir di dalam tim:", rata_rata_mahir, "\n"
mencetak teks dan menampilkan hasil dari perhitungan
rata_rata_mahir.
# Membuat Barplot
barplot(table(hasil), main = "Histogram Jumlah Anggota Mahir dalam Tim", xlab = "Jumlah Anggota Mahir", ylab = "Frekuensi", col = "lightblue")
barplot(...) merupakan fungsi utama untuk membuat
bar chart.
table(hasi) menghitung frekuensi kemunculan tiap
angka. Fungsi barplot membutuhkan data yang sudah
diringkas, sehingga hasil hitungan berapa kali muncul angka 2, 3, dst
yang akan dijadikan tinggi batang.
main = "Histogram Jumlah Anggota Mahir dalam Tim"
menampilkan judul utama ppada baian atas grafik.
xlab = "Jumlah Anggota Mahir" memberikan label pada
sumbu x yang menjelaskan kategori data orang mahir.
ylab = "Frekuensi" memberikan label pada sumbu y
yang menunjukkan berapa kali kejadian tersebut muncul dari total 1000
percobaan.
col = "lightblue" memberikan warna lightblue pada
batang grafik.
Barplot yang dihasilkan akan merepresentasikan hasil dari proses pengambilan sampel acak.
Dalam sebuah lotere, terdapat 100 tiket dengan nomor dari 1 hingga 100. Dari total tiket, hanya 10 tiket yang merupakan tiket pemenang.
Simulasikan pengambilan tiket secara acak sebanyak 3 kali tanpa pengembalian.
Tentukan apakah salah satu tiket yang diambil adalah tiket pemenang.
Ulangi simulasi sebanyak 1000 kali, hitung peluang mendapatkan setidaknya 1 tiket pemenang.
set.seed(123)
# Simulasi pengambilan tiket
simulasi_tiket = function() {
# Mengambil 3 tiket secara acak
tiket = sample(1:100, 3, replace = FALSE)
# Menentukan apakah ada tiket pemenang
ada_pemenang = any(tiket %in% 1:10)
return(ada_pemenang)
}
# Simulasi untuk banyak pengambilan
n_simulasi = 1000
# Hasil simulasi
hasil_simulasi = replicate(n_simulasi, simulasi_tiket())
# Menghitung peluang mendapatkan setidaknya 1 tiket pemenang
peluang = mean(hasil_simulasi)
# Menampilkan hasil
cat("Peluang mendapatkan setidaknya 1 tiket pemenang:", peluang, "\n")
## Peluang mendapatkan setidaknya 1 tiket pemenang: 0.261
Tiket dinomori dari nomor urut 1-100 dengan pemenang adalah yang memegang nomor urut 1-10
simulasi_tiket = function() {..} membbuat fungsi
untuk satu kali percobaan pengambilan tiket.
tiket = sample(1:100, 3, replace = FALSE) melakukan
simulasi mengambil 3 kupon dari dalam kotak dengan mengambil 3 angka
acak dari 1-100 tanpa pengembalian.
ada-pemenang = any(tiket %in% 1:10)
1:10 = daftar nomor pemenang.
%in% = operator untuk memeriksa apakah angka yang
terambil ada di dalam daftar 1-10.
any(...) menghasilkan TRUE jika minimal satu dari 3
tiket tersebut adalah nomor pemenang. Jika tidak maka FALSE.
return(ada_pemenang) mengembalikan hasil TRUE
(Menang) atau FALSE (kalah)
hasil_simulasi = replice(n_simulasi, simulasi_tiket())
mengulang fungsi tersebut sebanyak 1000x.
ppeluang = mean(hasil_simulasi) menghitung proporsi
kemenangan dengan nilai 1 untuk TRUE dan nilai 0 untuk FALSE. Rata-rata
ini emnunjukkan peluang.
# Fungsi untuk simulasi lotere
SimulasiLotere = function() {
tiket = c(rep("Biasa", 90),rep("Pemenang", 10)) # 10 tiket pemenang, 90 tiket biasa
pilihan = sample(tiket, 3, replace = FALSE)
return(any(pilihan == "Pemenang")) # Apakah ada tiket pemenang
}
# Jalankan simulasi 1000 kali
set.seed(123)
hasil = replicate(1000, SimulasiLotere())
peluang_menang = mean(hasil)
cat("Peluang mendapatkan setidaknya 1 tiket pemenang:", peluang_menang, "\n")
## Peluang mendapatkan setidaknya 1 tiket pemenang: 0.279
SimulasiLotere = function() {...} membuat fungsi
simulasi
tiket = c(rep("Biasa", 90), rep("Pemenang", 10))
membuat populasi dengan rep("Biasa", 90) membuat 90 teks
“Biasa”, rep("Pemenang", 10) membuat 10 teks pemenang.
c(...) menggabungkan keduanya menjadi vektor yang berisi
100 elemen.
pilihan = sample(tiket, 3, replace FALSE) mengambil
3 elemen secara acak dari kumpulan teks yang telah dibuat tanpa ada
peengembalian.
return(any(pilihan == "Pemenang")) dengan logika
pengecekan pilihan == "Pemenang" memeriksa tiket yang
terambil bertuliskan “Pemenang” dan any(...) memastikan
hasil akhirnya TRUE jika ada setidaknya 1 tiket “Pemenang” yang
terambil.
set.seed(123) hasil simulasi dikunci sehingga
konsisten dan dapat diproduksi ulang (reproducible).
peluang_menang = mean(hasil) menghitung rata-rata
kemunculan TRUE untuk mendapatkan estimasi peluang.
Sebuah permainan domino menggunakan kartu bernomor 1 hingga 12. Saat kartu pertama diambil, kartu kedua runtuh jika nomor kartu pertama adalah kelipatan dari nomor kartu kedua.
Buat simulasi mengambil 2 kartu acak dari tumpukan (tanpa pengembalian).
Tentukan apakah kartu kedua akan runtuh.
Ulangi simulasi sebanyak 500 kali, hitung berapa kali kartu kedua runtuh, dan hitung peluang runtuhnya kartu kedua.
# Fungsi untuk simulasi runtuhnya kartu domino
SimulasiDomino = function() {
kartu = sample(1:12, 2, replace = FALSE)
if (kartu[1] %% kartu[2] == 0) {
return(1) # Kartu kedua runtuh
} else {
return(0) # Kartu kedua tidak runtuh
}
}
# Jalankan simulasi 500 kali
set.seed(123)
hasil = replicate(500, SimulasiDomino())
peluang_runtuh = mean(hasil)
cat("Jumlah runtuhnya kartu kedua:", sum(hasil), "\n")
## Jumlah runtuhnya kartu kedua: 83
SimulasiDomino membuat fungsi simulasi
kartu = sample(1:12, 2, replace = FALSE mengambil 2
angka secara acak sari 1-12 tanpa adanya pengembalian. Angka pertama
kartu[1] dianggap sebagai kartu pemicu dan angka kedua
kartu[2] sebagai kartu target.
if(kartu[1] %% kartu[2] == 0 {...} memeriksa apakah
angka kartu pertama habis dibagi oleh angka kartu kedua dengan operator
%% sebagai modulo (sisa hasil bagi). Bernilai TRUE jika
terambil 6 dan 3 karena 6/3 = 1 (sisa 0). Bernilai FALSE
jika 7 dan 3 karena 7/3 = 2 (sisa 1).
return(1) dan return(0) mengembalikan angka 1 jika
kondisi terpenuhi dan 0 jika tidak.
set.seed(123) hasil simulasi dikunci sehingga
konsisten dan dapat diproduksi ulang (reproducible).
hasil = replicate(500, SimulasiDomino()) mengulang
fungsi tersbut sebanyak 500x. Variabel hasil akan berisi
deretan 500 angka yang terdiri dari 0 dan 1.
pelunag_runtuh = mean(hasil) menghitung rata-rata
yang merepresentasikan seberapa besar peluang.
cat("Jumlah runtuhnya kartu kedua:" sum(hasil), "\n")
menjumlahkan semua angka 1 ini menghitung frekuensi total kejadian
runtuh dari 500x percobaan.
cat("Peluang kartu kedua runtuh:", peluang_runtuh, "\n")
## Peluang kartu kedua runtuh: 0.166