Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Jika Anda adalah anak 70-an, Anda mungkin tumbuh dengan menonton acara permainan populer, Let's Make a Deal. Sejak saat itu, orang-orang dengan gamblang mendiskusikan teka-teki Monty Hall dan bersenang-senang mereplikasinya. Ketegangan dan drama yang mencengangkan yang diciptakan saat kontestan memilih salah satu dari tiga pintu itu menyenangkan untuk ditonton setiap saat.

Menggunakan matematika dan sedikit pemrograman, Anda akan membuat Simulator Monty Hall menggunakan Python. Dengan menggunakan ini, Anda akan dapat memutuskan sekali dan untuk selamanya bahwa mengganti pintu meningkatkan peluang Anda untuk menang.

Apa Masalah Monty Hall?

Masalah Monty Hall adalah penggoda otak yang dinamai dari pembawa acara gameshow, Monty Hall. Ada tiga pintu, hanya satu yang berisi hadiah yang diinginkan. Begitu Anda memilih sebuah pintu, Monty — entah apa yang ada di belakangnya — membuka pintu lain, memperlihatkan seekor kambing. Anda sekarang memiliki opsi untuk tetap pada keputusan awal Anda atau beralih ke pintu lain.

Karena sifatnya yang mengejutkan dan tidak dapat diprediksi, teka-teki Monty Hall sangat populer. Meskipun berurusan dengan probabilitas, solusinya menentang intuisi. Ini berfungsi sebagai demonstrasi yang sangat baik tentang betapa membingungkannya perhitungan probabilitas. Teka-teki itu mengajarkan kita bagaimana mengabaikan kesan kejadian yang tampaknya acak dan sebaliknya fokus pada penalaran dan fakta.

Modul Acak dan Tkinter

Untuk membuat simulasi Monty Hall dengan Python, mulailah dengan modul Random dan Tkinter.

Ada beberapa fungsi untuk menghasilkan angka acak dalam modul Random. Anda dapat menggunakan algoritme ini untuk menghasilkan urutan acak, pergerakan game, dan bilangan bulat acak semu. Ini sering digunakan di permainan seperti kriket tangan, atau tes mengetik sederhana, serta untuk mensimulasikan lemparan dadu dan mengacak daftar.

Tkinter adalah pustaka GUI default untuk Python. Dengan menggunakannya, Anda dapat membangun aplikasi GUI yang fantastis. Anda dapat membuat aplikasi daftar tugas, editor teks, atau kalkulator sederhana. Anda dapat mempraktikkan pengetahuan Anda dan mengasah keterampilan pemrograman Anda menggunakan Python dan Tkinter untuk membuat aplikasi desktop dasar.

Buka terminal dan jalankan perintah berikut untuk menambahkan Tkinter ke sistem Anda:

pip instal tkinter

Cara Membangun Simulator Monty Hall Menggunakan Python

Anda dapat menemukan kode sumber Simulator Monty Hall di sini repositori GitHub.

Impor modul acak dan Tkinter. Fungsi StringVar memudahkan untuk mengontrol nilai widget seperti Label atau Entri. Anda dapat menggunakan Label untuk menampilkan beberapa teks di layar dan Entri untuk mengambil input pengguna.

Inisialisasi instance Tkinter dan tampilkan jendela root. Atur dimensi jendela menjadi lebar 600 piksel dan tinggi 200 piksel menggunakan geometri() metode. Tetapkan judul jendela yang sesuai, dan larang pengubahan ukurannya.

impor acak
dari tkinter impor StringVar, Label, Tk, Entri

jendela = Tk()
jendela.geometri("600x200")
jendela.judul("Simulasi Monty Hall")
jendela.resizable(0, 0)

Selanjutnya, siapkan dua pasang widget dan variabel untuk menyimpan hasil simulasi. Aplikasi Anda akan meminta sejumlah proses untuk diselesaikan. Selama setiap lari, itu akan mensimulasikan permainan dan merekam hasilnya dalam setiap kasus: apakah pemain memutuskan untuk beralih atau mempertahankan pilihan yang sama.

Menggunakan StringVar(), setel nilai awal dari pilihan yang sama dan alihkan pilihan ke 0. Tentukan widget Entri dan atur ukuran fontnya menjadi 5. Deklarasikan dua label untuk menampilkan yang sama dan pilihan yang dialihkan dan posisikan. Deklarasikan dua label lagi yang akan menampilkan nilai variabel yang Anda tentukan sebelumnya. Terakhir, posisikan widget Entri di bawah keempat label ini.

same_choice = StringVar()
switch_choice = StringVar()
pilihan_sama.set(0)
pilihan_switch.set(0)
no_sample = Entri (font=5)

Label (teks="Pilihan yang Sama").tempat (x=230, y=58)
Label (teks="Pilihan Tertukar").tempat (x=230, y=90)
Label (textvariable=same_choice, font=(50)).tempat (x=350, y=58)
Label (textvariable=switched_choice, font=(50)).tempat (x=350, y=90)
no_sample.place (x=200, y=120)

Tentukan fungsi, mensimulasikan. Inisialisasi variabel hasil dan dapatkan nilai sampel yang dimasukkan oleh pengguna. Deklarasikan daftar yang berisi item yang akan diungkapkan oleh pintu.

Dalam setiap putaran, buat daftar duplikat dari pintu asli dan kocok dalam urutan acak. Pilih pintu acak dan keluarkan—ini mensimulasikan pilihan pemain. Kemudian simulasikan pengungkapan Monty: jika pintu pertama tidak berisi hadiah, buka, jika tidak, buka pintu kedua. Hapus pilihan itu dan tinggalkan pintu yang tersisa sebagai opsi untuk beralih.

defmensimulasikan(peristiwa):
sama_pilihan_hasil = 0
beralih_pilihan_hasil = 0
sampel = int (no_sample.get())
pintu = ["emas", "kambing", "kambing"]

untuk _ di dalam rentang (sampel):
simulationed_doors = pintu.copy()
random.shuffle (simulated_doors)
pilihan_pertama = pilihan_acak (pintu_simulasi)
simulationed_doors.remove (pilihan_pertama)
pintu_terbuka = ​​pintu_simulasi[0] jika pintu_simulasi[0] != "emas"kalau tidak pintu_simulasi[1]
simulationed_doors.remove (opened_doors)
switch_second_choice = pintu_simulasi[0]

Jika pilihan pertama berisi hadiah yang diinginkan, tambah satu hasil pilihan yang sama dan refleksikan di layar. Jika tidak, lakukan operasi yang sama untuk pilihan yang diaktifkan.

jika pilihan_pertama == "emas":
sama_pilihan_hasil += 1
same_choice.set (same_choice_result)
elif pilihan_kedua_beralih == "emas":
switch_choice_result += 1
switch_choice.set (switched_choice_result)

Langkah penting adalah mengikat tombol Enter dengan acara di jendela Tkinter. Melakukan hal itu memastikan bahwa ketika pemain menekan Memasuki, fungsi tertentu akan dijalankan. Untuk mencapai ini, lulus string dan fungsi simulasi sebagai parameter ke mengikat() fungsi.

Itu mainloop() fungsi memberi tahu Python untuk menjalankan loop acara Tkinter dan mendengarkan acara (seperti penekanan tombol) hingga Anda menutup jendela.

no_sample.bind("", simulasikan)
jendela.mainloop()

Satukan semuanya dan jalankan program Anda untuk mensimulasikan teka-teki dalam aksi.

Output Monty Hall Simulator Menggunakan Python

Saat menjalankan program, Anda akan melihat jendela sederhana dengan label pilihan Sama dan Dialihkan. Masukkan nomor sampel di bidang di bagian bawah untuk melihat hasil simulasi. Dalam contoh 3 proses ini, program menunjukkan bahwa ia menang sekali dengan pilihan yang sama dan dua kali dengan sakelar.

Hasil ini acak, tetapi Anda dapat menjalankan simulasi dengan ukuran sampel yang lebih besar agar lebih akurat. Dalam ukuran sampel 100 berikut, pilihan yang dialihkan menang 65 kali.

Memecahkan Masalah Menggunakan Pemrograman

Simulator Monty Hall adalah demonstrasi luar biasa tentang bagaimana Anda dapat menggunakan pemrograman untuk memecahkan masalah kehidupan nyata. Anda dapat mengembangkan berbagai algoritme dan melatih model untuk menjalankan tugas tertentu seperti menyortir larik atau meningkatkan efektivitas sistem untuk produksi yang optimal.

Bahasa pemrograman yang berbeda menawarkan kemampuan dan fungsi yang berbeda untuk membuat pemrograman lebih mudah. Menggunakan Python, Anda dapat membuat model yang dapat memprediksi nilai dataset masa depan dengan akurasi yang lebih tinggi. Selain itu, Anda dapat mengotomatiskan operasi berulang, mengurangi pekerjaan yang membosankan, dan meningkatkan kecepatan dan akurasi.