Verilen bir fonksiyon yazı tura işlemini %60 yazı %40 tura gelecek şekilde gerçekleştiriyor. Bu verilen fonksiyonu kullanarak bu işlemi nasıl hilesiz yapabiliriz?

Paranın %60 olasılıkla 0, %40 olasılık ile 1 döndürdüğünü biliyoruz. Çözüm olarak bu fonksiyonu iki kere çağıracağız. Eğer sonuçlar (1,0) veya (0,1) ise problem yok, direk cevabı vereceğiz fakat cevaplar (1,1) veya (0,0) ise işlemi tekrarlayacağız.

(0, 1): 0 sonrası 1 gelme olasılığı = 0.6 * 0.4 = 0.24
(1, 0): 1 sonrası 0 gelme olasılığı = 0.4 * 0.6 = 0.24
def foo():
    'Bu method hileli olarak 1 veya 0 döndürür'
    pass


def my_foo():
    val1 = foo()
    val2 = foo()
    if val1 == 0 and val2 == 1:
        return 0  # 0.24 olasılık
    if val1 == 1 and val2 == 0:
        return 1  # 0.24 olasılık
    return my_foo()  # 1 - 0.24 - 0.24 olasılık

Comments

comments powered by Disqus