Python Programlama ile Olasılık Soruları

Sonsuz.us sitesinde bolca olasılık sorusu var, bunların bazılarını python programlama ile çözüp örnekler sunacağım. Böylece random kütüphanesinin kullanımı ve olasılık sorularına uygulanışını görmüş olacağız.

Olasılık sorularında yapmamız gereken olayı doğru bir biçimde kodlayıp defalarca simülasyon tekrarlamamızdır. Yeterli sayıda simülasyon bize yaklaşık sonucu verecektir.

İlk sorumuz yine basit bir olasılık sorusu. Rastgele iki noktasından kırılan bir çubuğun parçalarının üçgen oluşturma olasılığı nedir?

Üçgen olma kuralı bildiğiniz üzere her hangi iki kenarın toplamı diğer kenardan büyük olma zorunluluğu olmasıydı. Programın yapması gerekense defalarca iki rastgele noktadan kırıp oluşan parçaları karşılaştırmak.

import random
ucgen=0
for i in range(10000):
  nokta = [random.random(),random.random()]
  nokta.sort()
  a,b,c = nokta[0],nokta[1]-nokta[0],1-nokta[1]
  if a+b>c and a+c>b and b+c>a:
    ucgen+=1
print(ucgen/10000)

Yeni bir olasılık sorusu olarak şunu ekleyebiliriz.

10 tane madeni paranın 8 tanesi hilesizdir, 2 tanesinin ise her iki yüzü de turadır. Bu 10 madeni paradan bir tanesi rasgele seçilir ve 2 defa yazı-tura atılırsa, her ikisinin de tura gelme ihtimali kaçtır?

import random

paralar = [["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["tura","tura"],["tura","tura"]]
olay = 0
for i in range(10000):
    para = random.choice(paralar)
    tura = 0
    for j in range(2):
        yuz = random.choice(para)
        if yuz == "tura":
            tura = tura + 1
    if tura == 2:
        olay = olay + 1
print(olay/10000)

Bir yanıt yazın