Monty Hall problemi

  • Konuyu açan Konuyu açan TheAdmin33
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 1
  • Gösterim Gösterim 50

TheAdmin33

Ah, bu şarkıların gözü kör olsun
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
1.159
Çözümler
62
Beğeni
3.498
Puan
1.859
Ticaret Puanı
0
Monty Hall Problemi, olasılık ve karar verme üzerine bir paradokstur ve şu şekilde ifade edilir:

Problemin Tanımı;

Üç kapı vardır: Kapılardan birinin arkasında bir araba (ödül), diğer ikisinin arkasında ise keçi (boş ödül) bulunur.

MontyHall.webp

Ödülün nerede olduğu oyuncuya söylenmez ve oyuncudan başlangıçta bir kapı seçemesi istenir.

Sunucu (Monty Hall), oyuncunun seçmediği iki kapıdan keçi olan bir kapıyı açar.

Sunucu, oyuncuya şu iki seçeneği sunar:
1) İlk seçimini değiştirmeden devam et.
2) İlk seçimini değiştirip diğer kapıyı seç.

Oyuncunun amacı arabayı kazanmaktır.

Örnek;

Diyelim ki siz, 3 kapıdan 1 numaralı olanı seçtiniz. Sunucu, sizin seçmediğiniz kapılardan bir tanesini, diyelim ki 3 numaralı kapıyı açtı.
Ve tabii ki arkasında büyük ödül değil, keçi vardı. Dolayısıyla şu anda büyük ödül ya sizin kapınızda ya da sunucunun açmamış olduğu diğer kapıda.
Sunucu size şunu soruyor:
1) İlk seçimini değiştirmeden devam et.
2) İlk seçimini değiştirip diğer kapıyı seç.
Yani zaten seçtiğiniz 1 numaralı kapıyla mı yola devam edeceksiniz ve arkasında ne varsa onu mu alacaksınız,
yoksa (bu örnekte) henüz açılmamış olan 2 numaralı kapıya mı geçmeyi tercih edeceksiniz?

Strateji ve Olasılık;

Eğer aklınızdan söyle geçiriyorsanız "Başlangıçta %33.333... (yani 3'te 1) şansım vardı, 1 kapı açılınca geriye iki kapı kaldığı için şansım %50'ye (2'de 1) yükselir" yanılıyorsunuz.
Evet, Eğer seçtiğinizin haricindeki kapıyı tercih ederseniz, şansınız tam 2 kat artar.
İlk seçimi değiştirmemek: Arabayı kazanma olasılığı başlangıçta seçilen kapının ödüllü olma ihtimaliyle aynıdır, yani 1/3 olur.
Seçimi değiştirmek: Arabayı kazanma olasılığı, sunucunun açtığı kapı bilgisiyle birlikte 2/3'e çıkar.

Anahtar Nokta;

Sunucu, Ödüllerin Yerini Biliyor.
Sunucu kapıyı açarken, hangisinin arkasında ne olduğunu bilmektedir. Eğer bilmeseydi, tercihinizi değiştirmek şansınız değiştirmezdi.
Ama sunucu ödüllerin yerini bilmektedir ve kapıları ona göre açmaktadır. Siz, olasılık hesabınızı yaparken, sunucunun bu bilgiye göre kapı açtığı gerçeğini görmezden gelemezsiniz.
Sistem bir bütündür, sunucunun bilgisi de bu sistemin bir parçasıdır. Ve sunucu, kapılara rastgele olmayan bir şekilde müdahale ettiği anda, size bir bilgi vermiş olmaktadır.
Bu bilgiyi olasılık hesabınıza dahil etmek ve yeni olasılık dağılımını bu bilgi ışığında hesaplamak zorundasınız.

Özet;

Tüm matematik hesaplarını değiştiren unsur, sunucunun kapının arkasında ne olup ne olmadığını bilmesidir.

Kapıyı değiştirirseniz, kazanma olasılığınız %66.
Kapıyı değiştirmezseniz, kazanma olasılığınız %33.

Bu durum, sezgisel olarak karşıt görünebilir, bu yüzden paradoks olarak adlandırılır, ancak matematiksel olarak kanıtlanmıştır.

hesaplama.webp

İspatın kodu(c++);

Monty Hall Problemi:
Genişlet Daralt Kopyala
#include <iostream>
#include <cstdlib>
#include <ctime>

void montyHallSimulation(int toplamDeneme)
{
    int degistirerekKazanan = 0; // Kapıyı değiştirerek kazananların sayısı
    int degistirmedenKazanan = 0; // Kapıyı değiştirmeden kazananların sayısı

    for (int i = 0; i < toplamDeneme; ++i)
    {
        int arabaKapisi = std::rand() % 3; // Araba hangi kapının arkasında
        int oyuncununIlkSecimi = std::rand() % 3; // Oyuncunun başlangıç seçimi

        // Açılacak olan bir keçi kapısı seç ve aç
        int acilanKapi;
        do
        {
            acilanKapi = std::rand() % 3;
        } while (acilanKapi == arabaKapisi || acilanKapi == oyuncununIlkSecimi);

        // Kapıyı değiştiren oyuncunun seçimini güncelle
        int oyuncununYeniSecimi;
        do
        {
            oyuncununYeniSecimi = std::rand() % 3;
        } while (oyuncununYeniSecimi == oyuncununIlkSecimi || oyuncununYeniSecimi == acilanKapi);

        if (oyuncununYeniSecimi == arabaKapisi)
        {
            ++degistirerekKazanan; // Kapıyı değiştiren kazandı
        }
        if (oyuncununIlkSecimi == arabaKapisi)
        {
            ++degistirmedenKazanan; // Kapıyı değiştirmeyen kazandı
        }
    }

    std::cout << "Toplam deneme sayısı: " << toplamDeneme << "\n";

    std::cout << "Kapıyı değiştirerek kazanma oranı: "
              << (static_cast<double>(degistirerekKazanan) / toplamDeneme) * 100 << "%\n";
    std::cout << "Kapıyı değiştirmeden kazanma oranı: "
              << (static_cast<double>(degistirmedenKazanan) / toplamDeneme) * 100 << "%\n";
}

int main() {
    // Rastgele sayı üreteci için seed ayarla (bir kez)
    std::srand(std::time(0));

    int SimulasyonSayısı;
    int toplamDeneme = 1000000;//Her simülasyonda 'SimulasyonSayısı' kadar deneme yapar.

    std::cout << "Monty Hall problemine hoş geldiniz!\n";
    std::cout << "Simülasyon kaç defa tekrar edilsin:";//tavsiye: çok yüksek sayı yazmayın.(1-10)
    std::cin >> SimulasyonSayısı;

    for (int i = 0; i < SimulasyonSayısı; ++i)
    {
        montyHallSimulation(toplamDeneme);
    }

    return 0;
}

Linkleri görebilmek için giriş yap veya kayıt ol.
 
Sunucu Mehmet Ali Erbil ise değiştir diyosa değiştirilir o kapı problem de patlar. Mehmet Ali Erbil ne adamdı programa gelenin ağzına beton salamını sokar ama sağlam ödülsüz yollamazdı.
 
Geri
Üst