Monty Hall Problemi Simülasyonu

image
image
image
Monty Hall Problemi Simülasyonu

Monty Hall Problemi Simülasyonu

Bir televizyon kanalında yapılan yarışmada 3 adet kapı bulunmaktadır. Üç kapından birisinin arkasında araba diğer ikisinde ise keçi vardır. Yarışmacıdan bir kapıyı seçmesi istenir. Kapının seçilmesinin ardından yarışmanın sunucusu Monty Hall diğer iki kapıdan birinde keçi olanı açar ve yarışmacıya tercihini değiştirme şansı verir. Tam burada “yarışmacı tahmini değiştirirse araba kazanma ihtimali artar mı?” yoksa “yarışmacı ilk tahmininde mutabık mı kalmalıdır?”   gibi sorular akıllara gelmektedir. Sizce ilk tercih değiştirilmeli midir..?  İlk akla gelen sunucu kapıyı açtıktan sonra iki kapı kaldığı ve araba kazanma olasılığımızın ve kaybetme olasılığımızın eşit olduğu gibi anımsanıyor. Atladığımız kısım ise ilk tercihi yaptığımızda sunucunun hangi kapıyı açacağını etkilediğimizin göz ardı edilmesidir. Sunucunun nasıl etkilendiğini aşağıdaki resimde görebilirsiniz.

İlk tercihimizi değiştirdiğimizde ve değiştirmediğimizde ortaya çıkan olasılıkları olasılık ağacından inceleyebilirsiniz.

Olasılık ağacında görüldüğü gibi ilk tercihimizi değiştirdiğimizde kazanma olasılığımız 2/3, değiştirmediğimizde ise 1/3’tür. Bu olasılık problemi oldukça ilgimi çekti. Umarım sizin de ilginizi çekmiştir. Buraya kadar Monty Hall probleminin teorik kısmından bahsetmeye çalıştım. Bu problemin deneysel olasılığını incelemek ve teorik olasılıkla karşılaştırmak için programını(simülasyonunu) yazmaya karar verdim ve bu programı(simülasyonu) sizlerle paylaşmak istiyorum. Programın açıklaması: Programda iki adet dizi kullanılmıştır. Biri resimList diğeri rastgeleSecilenResimler dizileridir. resimList içinde kullanılan resimlerin adreslerini tutmaktadır, rastgeleSecilenResimler dizisi ise içinde 0,1,2 sayilarının rastgele yerleştirileceği sayı dizisidir. Bu dizinin birinci elemanı birinci kapının arkasındakini, ikinci elemanı ikinci kapının arkasındakini, üçüncü elemanı ise üçüncü kapının arkasındakini tutacaktır. Buradaki 0,1 keçiyi, 2 sayısı ise arabayı temsil etmektedir. Bu sayıların rastgele yerleştirilmesi Karistir fonksiyonunda yapılmıştır. Bu iki tane keçi ve bir araba şu şekilde yerleştirilir: 1. Oyna fonksiyonun içinde rastgeleSecilenResimler dizisine her bir elemanına kendi index’ine eşit sayılar atanır.

      for (int i=0;i<3;i++)       {

            rastgeleSecilenResimler[i] = i;     }

2. rastgele değişkenine 0 ile 3 arasında yani 0,1,2 sayılarından biri rastgele atanır. Sonra rastgeleSecilenResimler dizinin i. index’sindeki terimi ile rastgele üretilen index’sindeki terimi yerdeğiştirilir ve böylece kapıların arkasına keçiler ve araba karışık bir şekilde yerleştirilmiş olur.

void Karistir()

        {

            int rastgele; // 0-> keçi 1-> keçi 2->araba

            for (int i = 0; i < 3; i++)

            {

                rastgele = rnd.Next(0, 3);

                int gecici = rastgeleSecilenResimler[i];

                rastgeleSecilenResimler[i] = rastgeleSecilenResimler[rastgele];

                rastgeleSecilenResimler[rastgele] = gecici;

            }

        }

Programın kodlarına ulaşmak için: https://github.com/huseyinerbayat/monty-hall-problem/ Programı indirmek için: https://yadi.sk/d/hqAeabn3isNnJ