- 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.
Ö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.
İspatın kodu(c++);
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.
Ö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.
Monty Hall Problemi:
#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.