我必須計算正確解碼一個位複製n
次的概率。 下面的公式應該是答案:多數邏輯解碼Haskell
在Haskell,我編碼,如下所示:
fac 1 = 1
fac n = fac (n-1) * n
--prob :: (Integral b, Fractional b) => (b, b) -> b
--prob :: (Int,Int) -> Double
prob (n, k)
| n==k = (0.01**k)
| otherwise = factor (n, k) * (0.01 ** k) * (0.99**(n-k)) + prob (n, (k+1))
where
factor (n, k) = (fac n/((fac k)* (fac n-k)))
1 - prob (3,2)
給出結果0.99992575
,這是不正確的,因爲它應該0.99970
。有誰知道我錯了哪裏?
將epsilon作爲'prob'的一個參數,我個人會圍繞它製作一個包裝函數,以便從傳入的'n'中爲我計算'k'。將epsilon調小一點,看看是不是問題所在是。 – bheklilr 2014-09-25 14:29:34
你爲什麼要評論這種類型? – user3329719 2014-09-25 15:14:37
這看起來像牛頓的binom公式 – user3329719 2014-09-25 15:15:34