问题很简单,给定K和N,当赢得或失去单个游戏的概率等于1/2时,在N场比赛中赢得至少K的概率是多少。
唯一的是N大到10 ^ 6。
使用素数分解我可以有效地计算出N场比赛中K胜利的概率,但对于至少K来说它似乎并不有效。
请提供有效的方法。
答案 0 :(得分:1)
您正在寻找 CDF (累积分布函数 - 概率
该分布函数的值小于或等于x
。)
https://en.wikipedia.org/wiki/Cumulative_distribution_function
在您的情况下,Binomial distribution CDF
为Regularized Incomplete Beta function:
CDF(p, N, K) = I(1 - p, N - K, 1 + K)
在你的情况下(p = 1/2
)
P(N, K) = 1 - I(0.5, N - K + 1, K)
许多数学引擎提供此类 beta函数,例如免费Octave使用betainc:
N = 10; # 10 games
K = 2; # win at least 2
1 - betainc(0.5, N - K + 1, K)
结果
0.98926
答案 1 :(得分:-1)
让我们来表示
P(k,n)= Probability of winning atleast k out of n games
现在,
P(k,n) = P(k,n| nth chance was win)*P(nth win) + P(k,n| nth chance was lost)*P(nth lost)
= 1/2*P(k-1,n-1) + 1/2*P(k,n-1)
如果使用此递归,则不需要进行素数分解。