Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

70'lerde bir çocuksanız, popüler yarışma programı Let's Make a Deal'ı izleyerek büyümüş olabilirsiniz. O zamandan beri, insanlar Monty Hall yapbozunu canlı bir şekilde tartışıyor ve onu kopyalarken eğleniyor. Yarışmacının üç kapıdan birini seçmesiyle ortaya çıkan akıllara durgunluk veren gerilim ve dram, her seferinde izlemesi eğlenceli.

Matematik ve biraz programlama kullanarak, Python kullanarak bir Monty Hall Simülatörü inşa edeceksiniz. Bunu kullanarak, kapıları değiştirmenin kazanma şansınızı artırdığına kesin olarak karar verebileceksiniz.

Monty Hall Problemi Nedir?

Monty Hall sorunu adını oyun programı sunucusu Monty Hall'dan alan bir zeka oyunudur. Sadece biri istenen ödülü içeren üç kapı vardır. Bir kapı seçtikten sonra, Monty - kim bilir - arkalarında ne var - başka bir kapıyı açarak bir keçiyi ortaya çıkarır. Artık ilk kararınıza bağlı kalma veya diğer kapıya geçme seçeneğiniz var.

instagram viewer

Monty Hall bulmacası, şaşırtıcı ve tahmin edilemez doğası nedeniyle çok popüler. Olasılıklarla uğraşmasına rağmen, çözüm sezgiye meydan okuyor. Olasılık hesaplamalarının ne kadar kafa karıştırıcı olabileceğinin mükemmel bir göstergesi olarak hizmet ediyor. Bulmaca bize görünüşte rastgele olan olayların izlenimlerini nasıl görmezden geleceğimizi ve bunun yerine muhakeme ve gerçeklere nasıl odaklanacağımızı öğretir.

Random ve Tkinter Modülleri

Python'da bir Monty Hall simülasyonu oluşturmak için Random ve Tkinter modülleriyle başlayın.

Rastgele modülde rasgele sayılar üretmek için çeşitli işlevler vardır. Karışık diziler, oyun hareketleri ve sözde rastgele tamsayılar oluşturmak için bu algoritmaları kullanabilirsiniz. Sıklıkla kullanılır el kriket gibi oyunlar, veya basit bir yazım testi, ayrıca zar atışlarını simüle etmek ve listeleri karıştırmak için.

Tkinter, Python için varsayılan GUI kitaplığıdır. Bunu kullanarak harika GUI uygulamaları oluşturabilirsiniz. Bir yapılacaklar listesi uygulaması, metin düzenleyici veya basit bir hesap makinesi oluşturabilirsiniz. Temel masaüstü uygulamaları oluşturmak için Python ve Tkinter kullanarak bilginizi uygulamaya koyabilir ve programlama becerilerinizi geliştirebilirsiniz.

Bir terminal açın ve Tkinter'ı sisteminize eklemek için aşağıdaki komutu çalıştırın:

pip kurulumu tkinter

Python Kullanarak Monty Hall Simülatörü Nasıl Yapılır?

Monty Hall Simulator'un kaynak kodunu burada bulabilirsiniz. GitHub deposu.

Rastgele ve Tkinter modüllerini içe aktarın. StringVar işlevi, Etiket veya Giriş gibi bir parçacığın değerini kontrol etmeyi kolaylaştırır. Ekranda bazı metinleri görüntülemek için bir Etiket ve kullanıcı girdisini almak için bir Giriş kullanabilirsiniz.

Tkinter örneğini başlatın ve kök pencereyi görüntüleyin. Pencerenin boyutlarını 600 piksel genişliğinde ve 200 piksel yüksekliğinde olacak şekilde ayarlayın. geometri() yöntem. Uygun bir pencere başlığı ayarlayın ve yeniden boyutlandırılmasını yasaklayın.

içe aktarmak rastgele
itibaren tkinter içe aktarmak StringVar, Etiket, Tk, Giriş

pencere = Tk()
pencere.geometri("600x200")
pencere.başlık("Monty Hall Simülasyonu")
pencere.yeniden boyutlandırılabilir(0, 0)

Ardından, simülasyon sonuçlarını saklamak için iki çift widget ve değişken ayarlayın. Uygulamanız, tamamlanması için birkaç çalıştırma isteyecektir. Her çalışma sırasında, oyunu simüle edecek ve her durumda sonucu kaydedecektir: oyuncu aynı seçimi yapmaya devam etse de değiştirmese de.

StringVar() kullanarak, aynı seçimin başlangıç ​​değerlerini ayarlayın ve seçimi 0 olarak değiştirin. Bir Giriş parçacığı tanımlayın ve yazı tipi boyutunu 5 olarak ayarlayın. Aynı ve değiştirilen seçimi görüntülemek ve konumlandırmak için iki etiket bildirin. Daha önce tanımladığınız değişkenlerin değerini gösterecek iki etiket daha bildirin. Son olarak, Giriş widget'ını bu dört etiketin altına yerleştirin.

same_choice = StringVar()
switch_choice = StringVar()
same_choice.set(0)
switch_choice.set(0)
no_sample = Giriş (font=5)

Etiket (metin="Aynı Seçim").yer (x=230y=58)
Etiket (metin="Değiştirilmiş Seçim").yer (x=230y=90)
Etiket (metin değişkeni=same_choice, yazı tipi=(50)).yer (x=350y=58)
Etiket (textvariable=switched_choice, font=(50)).yer (x=350y=90)
no_sample.place (x=200y=120)

Bir işlev tanımlayın, benzetmek. Sonuç değişkenlerini başlatın ve kullanıcı tarafından girilen örnek değeri alın. Kapıların ortaya çıkaracağı öğeleri içeren bir liste bildirin.

Her çalıştırmada, orijinal kapıların bir kopyasını oluşturun ve rastgele bir sırayla karıştırın. Rastgele bir kapı seçin ve kaldırın; bu, oyuncunun seçimini simüle eder. Ardından Monty'nin ifşasını simüle edin: ilk kapıda ödül yoksa onu açın, aksi takdirde ikinci kapıyı açın. Bu seçimi kaldırın ve geçiş seçeneği olarak kalan kapıyı bırakın.

kesinbenzetmek(etkinlik):
same_choice_result = 0
switch_choice_result = 0
örnekler = int (no_sample.get())
kapılar = ["altın", "keçi", "keçi"]

için _ içinde aralık (örnekler):
simüle edilmiş_kapılar = kapılar.kopya()
random.shuffle (simulated_doors)
first_choice = rastgele.seçim (simüle edilmiş_kapılar)
simüle edilmiş_kapılar.kaldır (ilk_seçim)
open_door = simüle edilmiş_kapılar[0] eğer simüle_kapılar[0] != "altın"başka simüle_kapılar[1]
simüle edilmiş_kapılar.kaldır (kapı açıldı)
switch_second_choice = simüle edilmiş_kapılar[0]

İlk seçimde istenilen ödül varsa aynı seçim sonucunu bir arttırarak ekrana yansıtın. Aksi takdirde, değiştirilen seçim için aynı işlemi yapın.

eğer ilk_seçim == "altın":
same_choice_result += 1
same_choice.set (same_choice_result)
elif Switched_second_choice == "altın":
switch_choice_result += 1
switch_choice.set (switched_choice_result)

Önemli bir adım, Enter tuşunu Tkinter penceresindeki bir olayla ilişkilendirmektir. Bunu yapmak, oyuncu bastığında Girmek, belirli bir işlev çalışacaktır. Bunu başarmak için, dizesi ve simüle işlevi, parametre olarak bağlamak() işlev.

bu Ana döngü() işlevi, Python'a Tkinter olay döngüsünü çalıştırmasını ve siz pencereyi kapatana kadar olayları (düğmeye basmalar gibi) dinlemesini söyler.

no_sample.bind("", simüle)
pencere.mainloop()

Hepsini bir araya getirin ve bulmacayı iş başında simüle etmek için programınızı çalıştırın.

Python Kullanarak Monty Hall Simülatörünün Çıktısı

Programı çalıştırırken, Aynı ve Değiştirilmiş seçim etiketlerini içeren basit bir pencere göreceksiniz. Simüle edilmiş sonuçları görüntülemek için alttaki alana bir numune numarası girin. 3 çalıştırmadan oluşan bu örnekte, program aynı seçimle bir kez ve bir geçişle iki kez kazandığını gösteriyor.

Bu sonuçlar rastgeledir, ancak daha fazla doğruluk için simülasyonu daha büyük bir örneklem boyutuyla çalıştırabilirsiniz. Aşağıdaki 100 örnek boyutunda, değiştirilen seçenek 65 kez kazanır.

Programlamayı Kullanarak Problemleri Çözme

Monty Hall Simülatörü, programlamayı gerçek hayattaki sorunları çözmek için nasıl kullanabileceğinizin mükemmel bir gösterimidir. Bir diziyi sıralamak veya optimum üretim için bir sistemin etkinliğini artırmak gibi belirli görevleri gerçekleştirmek için çeşitli algoritmalar geliştirebilir ve modeller eğitebilirsiniz.

Farklı programlama dilleri, programlamayı kolaylaştırmak için farklı yetenekler ve işlevler sunar. Python kullanarak, bir veri kümesinin gelecekteki değerlerini daha yüksek doğrulukla tahmin edebilen modeller oluşturabilirsiniz. Ayrıca, tekrar eden işlemleri otomatikleştirebilir, sıkıcı işleri azaltabilir, hızı ve doğruluğu artırabilirsiniz.