小弟我對於樂透機率小有疑問
於是寫了個簡單的程式來跑一下
但不管怎麼跑總是搭不起來
我的問題如下
樂透49個號碼,我只簽2個號碼
要求出
2中0
2中1
2中2
三種狀況的機率
自己直接用公式算完的機率分別是
2中0 = 0.767857143
2中1 = 0.219387755
2中2 = 0.012755102
但是我自己寫了程式下去跑
機率總和永遠大於1
雖然誤差一定會有
但是這怎麼看都不太像是誤差QQ
想請各位前輩幫忙看看是否程式寫錯或是邏輯觀念錯誤
作者: marx93521 (<阿ㄉ一ㄥˋ>) 2018-05-07 15:39:00
winOne跟winAll是不是重複計算到了?
作者:
jej (晃奶大馬桶)
2018-05-07 19:50:00看到double就要小心IEEE的限定
作者:
wemee (方天畫)
2018-05-08 12:29:00IEEE 754 我中招很多次
作者: FromTo 2018-05-08 14:35:00
二中一的判斷式有誤,會包含二中二。包含A(B)&&不包含B(A)
你檢查中獎的第一行不對 (A||B) A是true就不會管B是怎樣了
但我2中2是另外寫if,並不是寫else if,,這樣也不行嗎?
如果你get(0)和get(1)都是true他就會直接執行winOne++然後到下面又winAll++一次所以你第一個if判斷的地方出錯了
作者:
ssccg (23)
2018-05-09 13:09:00就是因為另外寫if才會錯啊A and B就已經包含在A or B裡面了只寫if 不用else的話,每個條件都必須不會互相包含寫if else if 要由不包含其他條件的依序放寬邏輯觀念的問題比較大
作者:
gmoz ( This can't do that. )
2018-05-09 16:30:00你需要先知道一下if()裡面是怎麼運作的