Php – Atılan 3 zardan en az birinin 1 gelme olasılığı

Bir akşam arkadaşlarımla kahve içerken bu sorunun yanıtı hakkında tartışmıştık. Konu da elbette girmiş olduğumuz Ales, kpss sınavlarındaki olasılık sorularından konuşurken açılmıştı. Ortak bir çözüme kavuşamayınca php ile bu uygulamayı yapmaya karar verdim. Bu uygulamada da for döngüleri ve if koşullarıyla ilgili güzel örnekler olduğu için paylaşmak istedim.

Soru: Atılan 3 zardan en az birinin 1 gelme olasılığı nedir?

Öncelikle toplam durum için 1 ve birli olasılıklar için 0 olan birer değişken tanımladım.


$toplamdurum = 1;

$birlidurum = 0;

Ardından 3 zar için iç içe gelmiş for döngülerini yazdım. Zarların yüzünde olan 1,2,3,4,5 ve 6 rakamları için 1 den başlayıp 7’den küçük olana kadar devam eden for döngülerini oluşturdum.

for($zar = 1; $zar < 7; $zar++) {
   for($zar2 = 1; $zar2 < 7; $zar2++) {
      for($zar3 = 1; $zar3 < $zar3++) {
      echo "[$zar][$zar2][$zar3]";
      }
   }
}

Bu satırların çıktısı:
[1][1][1]
[1][1][2]
[1][1][3]
[1][1][4]
[1][1][5]
[1][1][6]
[1][2][1]
.
.
.
[6][6][3]
[6][6][4]
[6][6][5]
[6][6][6]

En iç kısımda bulunan echo altına da toplam olasılık için her seferinde 1 artma durumunu eklediğimizde toplam durum karşımıza çıktı.

$toplamdurum = 1;
for($zar = 1; $zar < 7; $zar++) { 
      for($zar2 = 1; $zar2 < 7; $zar2++) { 
          for($zar3 = 1; $zar3 < 7; $zar3++) { 
          echo "$toplamdurum. Durum: [$zar][$zar2][$zar3]";
          $toplamdurum++;
          } 
      }
 }

Bu satırların çıktısı:
1. Durum [1][1][1]
2. Durum [1][1][2]
3. Durum [1][1][3]
4. Durum [1][1][4]
5. Durum [1][1][5]
6. Durum [1][1][6]
7. Durum [1][2][1]
.
.
.
213. Durum [6][6][3]
214. Durum [6][6][4]
215. Durum [6][6][5]
216. Durum [6][6][6]

Ardından her durumda if koşuluyla zarlardan birinin en az 1 olma duruma bakalım. $toplamdurum++; satırının hemen altına aşağıdaki kodları ekleyelim.


 if ($zar == 1 || $zar2 == 1 || $zar3 == 1 ) 
{
$birlidurum ++;
}

Zarlardan herhangi birinin 1 gelmesi durumunda $birlidurum olarak oluşturduğumuz değişken 1 artacak. Bu sayede döngüler bittiğinde birli durumun sayısını görebileceğiz.

Bu satırların çıktısı:
1. Durum [1][1][1]
2. Durum [1][1][2]
3. Durum [1][1][3]
4. Durum [1][1][4]
5. Durum [1][1][5]
6. Durum [1][1][6]
7. Durum [1][2][1]
.
.
.
213. Durum [6][6][3]
214. Durum [6][6][4]
215. Durum [6][6][5]
216. Durum [6][6][6]

Toplam Durum: 216

Birli Durum: 91

Sonuç: 91/216

Programın çalışır halini ve sonucu görüntülemek için tıklayınız.

Matematiksek çözümüyle de aynı sonucu bulmaya çalışalım. 1 gelme durumunu A olarak tanımlayalım.

A = {1 Gelme Durumu}

Sonrasında [1][x][x], [x][1][x] ve [x][x][1] için çözümleri yazalım. Burada yazacağımız çözümlerde x’li kısımlara 1 gelmemektedir. Zira birazdan [1][1][x]’li çözümlere de bakacağız.:

P(A,A’,A’) + P(A’,A,A’) + P(A’,A’,A) =

= (1/6).(5/6).(5/6) + (5/6).(1/6).(5/6) + (5/6).(5/6).(1/6) = 3.(1/6).(5/6).(5/6) = 75/216

Yine sırasıyla [1][1][x], [1][x][1] ve [x][1][1] için çözümleri yazalım:

P(A,A,A’) + P(A,A’,A) + P(A’,A,A) =

= (1/6).(1/6).(5/6) + (1/6).(5/6).(1/6) + (5/6).(1/6).(1/6) = 3.(1/6).(1/6).(5/6) = 15/216

ve Son olarak [1][1][1] içinse zaten 1 durum olduğunu görüyoruz:

P(A,A,A) = (1/6).(1/6).(1/6) = 1/216

Hepsini topladığımızda (75/216) + (15/216) + (1/216) = 91/216

 

Yorum Yap

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir