Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python

Rastlantı ya da kesin olmayan olaylarla ilgilenen olasılık teorisi, rastlantı olaylarını belirli kurallara göre matematik disiplininde inceleyen bir bilim dalıdır. Burada, rastlantı olayından kasıt gerçekleşmesi şansa bağlı olan önceden kesin olarak bilinmeyen olaylardır. Burada olabildiğince yalın bir şekilde uygulamalı örneklerin şans oyunları üzerinden verilmesinin nedeni olasılık konusuna dikkat çekmek ve olasılık konusuyla ilgileneceklere katkıda bulunmaktır. Yoksa amaç bu oyunları oynamaya özendirmek veya teşvik emek değildir. Bunu burada özellikle ifade etmek gerekir 🙂 .

Çalışma kapsamında Python programlama dili kullanılarak şans oyunlarından biri olan 01.08.2020 tarihinde yürürlüğe giren Çılgın (🤪) Sayısal Loto kombinasyonları ve olasılıkları hesaplanarak kazanma olasılıkları karşılaştırmalı olarak verilmiştir.

Rastlantı ya da kesin olmayan olaylarla ilgilenen olasılık teorisi, rastlantı olaylarını belirli kurallara göre matematik disiplininde inceleyen bir bilim dalıdır. Burada, rastlantı olayından kasıt gerçekleşmesi şansa bağlı olan önceden bilinmeyen olaylardır.

Çılgın Sayısal Loto kazanma olasılıklarının hesaplanmasında kesikli olasılık dağılımlarından biri ola Hipergeometrik Olasılık Dağılımı (Hypergeometric Probability Distribution) kullanılmıştır.

Hypergeometrik Dağılım

Hipergeometrik dağılım basit tekrarsız tesadüfi örneklem (iadesiz örneklem) seçiminin yapıldığı denemedir. Hipergeometik dağılımın varsayımları şöyledir:

  • Her deneyin olası iki sonucu vardır.
  • Deneyin tekrarlanma sayısı (n) sabittir.
  • Deneyler birbirinden bağımsızdır.

Hipergeometrik dağılımında kullanılan parametreler Tablo 1’de verilmiştir. Eşitliklerde bir deneyde istenen sonucun ortaya çıkma olasılığı, diğer bir ifadeyle başarı olasılığı p, istenen sonucun ortaya çıkmama olasılığı ise q=1-p‘dir. Tekrarsız örnekleme söz konusu olduğu için başarı olasılığı (p) deneyden deneye farklılık göstermektedir.

Tablo 1: Hipergeometrik Dağılım Parametreleri

Hipergeometrik Olasılık Kütle Fonksiyonu (PMF)

Tablo 1’deki parametreler kullanılarak oluşturulan Hipergeometrik olasılık kütle fonksiyonu (PMF) aşağıdaki eşitlikte verilmiştir. Parantez içindeki eşitlikler tekrarsız kombinasyonları ifade etmektedir.

Eşitlikte N anakütle eleman sayısını, m popülasyondaki başarı sayısını, x örneklemdeki başarı sayısını, n örneklem hacmini göstermektedir.

Uygulama

Uygulamaya geçilmeden önce Pyhton’da yüklenmesi gereken kütüphaneleri veya modülleri aşağıda verelim. Uygulamalar Pyhton Jupyter notebook üzerinde yapılmıştır.

Yüklenmesi gereken modüller

from sympy.stats import Hypergeometric, density 

Örnek 1: Çılgın Sayısal Loto şans oyununda haznede 90 top bulunmaktadır. İçerisinden iadesiz seçilen 6 toptan sırasıyla 2, 3, 4, 5 ve 6 bilene ikramiye verilmektedir. Not: 5+1 kazanma olasılığı hesaplama dışında bırakılmıştır. 5+1 kazanma olasılığı bir sonraki örnekte hesaplanacaktır.

İstenenler

  1. Çılgın Sayısal Loto şans oyunu olasılık fonksiyonunu bulunuz.
  2. Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıklarını alternatif çözümle birlikte hesaplayınız.

Bilinenler

  • N= 90 (Anakütledeki eleman sayısı)
  • x= 2’den 6’ya kadar (dahil) (Örneklemdeki başarı sayısı)
  • m=6 (Popülasyondaki başarı sayısı)
  • n= 6 (Örneklem hacmi)

Çözüm

  1. Bilinenleri Hipergeometrik kütle olasılık fonksiyonunda yerine koyarsak Çılgın Sayısal Loto şans oyunu olasılık fonksiyonu aşağıdaki gibi olacaktır. Parantez içindeki eşitlikler tekrarsız kombinasyonları göstermektedir.

2. Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıkları aşağıda yazılan Python kod bloğunda hesaplanmıştır. Ancak burada 2’den 6’ya kadar olan tüm kazanma olasılıkları anlaşılması adına ayrı ayrı Python kod bloklarında verilmiştir. İlk olarak 6 kazanma olasılığını hesapladıktan sonra daha kolay anlaşılması için çarpmaya göre tersini verelim.

#6 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[6]
print("6 Kazanma Olasılığı=", round(1/olasilik1,3),"'da 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 6 kazanma olasılığı= 622.614.630,0’da 1 olup, aşağıda verilmiştir.

6 Kazanma Olasılığı= 622614630.0 'da 1'dir.

5 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#5 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[5]
print("5 Kazanma Olasılığı=", round(1/olasilik1,3),"'de 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 5 kazanma olasılığı= 1.235.346,488 ‘de 1 olup, aşağıda verilmiştir.

5 Kazanma Olasılığı= 1235346.488 'de 1'dir.

4 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#4 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[4]
print("4 Kazanma Olasılığı=", round(1/olasilik1,3),"'te 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 4 kazanma olasılığı= 11.906,954’te 1 olup, aşağıda verilmiştir.

4 Kazanma Olasılığı= 11906.954 'da 1'dir.

3 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#3 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[3]
print("3 Kazanma Olasılığı=", round(1/olasilik1,3),"'da 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 3 kazanma olasılığı= 326,715’te 1 olup, aşağıda verilmiştir.

3 Kazanma Olasılığı= 326.715 'te 1'dir.

2 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#2 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[2]
print("2 Kazanma Olasılığı=", round(1/olasilik1,3),"'de 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 2 kazanma olasılığı= 21,512 ‘te 1 olup, aşağıda verilmiştir.

2 Kazanma Olasılığı= 21.512 'de 1'dir.

Alternatif çözüm

Yukarıda görüleceği üzere Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıklarını yazılan Python kod bloklarında sırasıyla hesaplanmıştır. Ancak hem zamandan kazanmak hem de Hypergeometric() fonksiyonu yerine math.factorial() fonksiyonu kullanarak, diğer bir ifadeyle faktöriyelleri kullanarak daha pratik hareket edelim. Böylece çoğumuzun aşina olduğu faktöriyeller üzerinden giderek ve for döngüsü oluşturarak Hipergeometrik olasılık konusunu daha kalıcı hale getirelim. İlk olarak aşağıdaki Python kod bloğundan kütüphanemizi yükleyelim.

import math 

Şimdi Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıklarını hesaplamada for döngüsü (for loop)’nü kullandığım aşağıdaki Python kod bloğunda verelim.

N=90 #Anakütledeki eleman sayısı
n=6  #Örneklem hacmi
m=6  #Popülasyondaki başarı sayısı
x=[2,3,4,5,6] #Örneklemdeki başarı sayıları

uzunluk = len(x)

for i in range(uzunluk):
    pay1=math.factorial(m)/(math.factorial(m-x[i])*math.factorial(x[i]))
    pay2=math.factorial(N-m)/(math.factorial(N-m-n+x[i])*math.factorial(n-x[i]))
    payda=math.factorial(N)/(math.factorial(N-n)*math.factorial(n))
    sonuc=float(pay1*pay2/payda)
    print(x[i],"Kazanma Olasılığı:", f"{sonuc:.20f}","; [",round(1/sonuc,3),"'de 1'dir.","]")

Yukarıdaki kod bloğunun çalıştırılmasından sonra Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıkları aşağıda verilmiştir.

2 Kazanma Olasılığı: 0.04648543995826118214 ; [ 21.512 'de 1'dir. ]
3 Kazanma Olasılığı: 0.00306076970918592144 ; [ 326.715 'de 1'dir. ]
4 Kazanma Olasılığı: 0.00008398453470327223 ; [ 11906.954 'de 1'dir. ]
5 Kazanma Olasılığı: 0.00000080948949111588 ; [ 1235346.488 'de 1'dir. ]
6 Kazanma Olasılığı: 0.00000000160612994269 ; [ 622614630.0 'de 1'dir. ]

Örnek 2: Çılgın Sayısal Loto şans oyununda haznede 90 top bulunmaktadır. İçerisinden iadesiz seçilen 7 toptan 5 + 1 bilene de ikramiye verilmektedir.

İstenenler

  1. Çılgın Sayısal Loto şans oyununda 5+1 kazanma olasılığını alternatif çözümü ile birlikte hesaplayınız ve eşitliğini bulunuz.

Bilinenler

  • N= 90 (Anakütledeki eleman sayısı)
  • x= 6 (Örneklemdeki başarı sayısı)
  • m=6 (Popülasyondaki başarı sayısı)
  • n= 7 (Örneklem hacmi)

Çözüm

  1. Çılgın Sayısal Loto şans oyununda 5 +1 kazanma olasılığı aşağıda yazılan Python kod bloğunda hesaplanmıştır.
#5+1 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 7) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[6]
print("5+1 Kazanma Olasılığı=", round(1/olasilik1,3),"'te 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 5 +1 kazanma olasılığı= 88.944.947,143’te 1 olup, aşağıda verilmiştir.

5+1 Kazanma Olasılığı= 88944947.143 'te 1'dir.

Çözümü eşitlik üzerinde de göstermek de fayda var. 5 + 1 kazanma olasılığında Hipergeometrik olasılık eşitliğimiz çözümü ile birlikte şöyle olacaktır:

Eşitlikte hesaplanan olasılık değeri kolay ifade edilebilsin diye çarpmaya göre tersi alınmıştır.

Alternatif çözüm

Yukarıda biz Çılgın Sayısal Loto şans oyununda 5 +1 kazanma olasılığını Hypergeometric() fonksiyonu kullanarak hesaplamıştık. Şimdi math.factorial() fonksiyonu kullanarak, diğer bir ifadeyle çoğumuzun aşina olduğu faktöriyelleri kullanarak 5 + 1 kazanma olasılığını aşağıda yazdığım Python kod bloğunda hesaplayalım. Bir önceki alternatif çözümde kütüphane yüklendiği için burada ayrıca yüklenecek kütüphane adı verilmemiştir.

#5 + 1 Kazanma olasılığı
N=90 #Anakütledeki eleman sayısı
n=7  #Örneklem hacmi
m=6  #Popülasyondaki başarı sayısı
x=6  #Örneklemdeki başarı sayısı

pay1=math.factorial(m)/(math.factorial(m-x)*math.factorial(x))
pay2=math.factorial(N-m)/(math.factorial(N-m-n+x)*math.factorial(n-x))
payda=math.factorial(N)/(math.factorial(N-n)*math.factorial(n))
sonuc=float(pay1*pay2/payda)
print("5 + 1 Kazanma Olasılığı:", f"{sonuc:.20f}","; [",round(1/sonuc,3),"'te 1'dir.","]")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 5 +1 kazanma olasılığı aşağıda verilmiştir.

5 + 1 Kazanma Olasılığı: 0.00000001124290959883 ; [ 88944947.143 'te 1'dir. ]

Özetle kesikli olasılık dağılımlarından biri olan Hipergeometrik olasılık dağılımı kullanılarak hesaplanan Çılgın Sayısal Loto ikramiye kazanma olasılıkları kategorilere göre aşağıda verilmiştir. Ortaya konulan bulgulara göre 90 sayı içerisinde;

  • 6 bilme şansınız 622.614.630,0’da 1’dir.
  • 5 +1 bilme şansınız 88.944.947,143’te 1’dir.
  • 5 bilme şansınız 1.235.346,488 ‘de 1’dir.
  • 4 bilme şansınız 11.906,954’te 1’dir.
  • 3 bilme şansınız 326,715’te 1’dir.
  • 2 bilme şansınız 21,51’te 1’dir.

Ortaya konulan araştırma bulguları Çılgın Sayısal Loto kazanma olasılıklarının Sayısal Loto kazanma olasılıklarından çok daha düşük olduğunu göstermektedir. Aşağıdaki linkten yaptığım çalışmada karşılaştırma sonuçlara ulaşabilirsiniz.

Şans Oyunları Perspektifinden Olasılık

Sonuç olarak Python’da yapılan bu çalışmayla olasılık teorisindeki kesikli olasılık dağılımlarından biri olan Hipergeometrik olasılık dağılımı kullanılarak şans oyunları özelinde olasılık teorisine dikkat çekilmeye çalışılmıştır.

Yukarıda yapılan işlemler R programlama dili kullanarak geliştirdiğim shiny web uygulamam üzerinde de hesaplanabilir. Linki aşağıda paylaşıyorum.

Hipergeometrik Olasılık Hesaplayıcı. 01.09.2020. https://buluttevfik.shinyapps.io/HypergeometricProbabilityCalculator/

Faydalı olması ve farkındalık oluşturması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.

Note: It can not be cited or copied without referencing.

Yararlanılan Kaynaklar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s