问题
单独执行一次某任务,事件A发生的概率为r 执行m次某任务,“事件A连续发生n次”(n<=m)出现的概率为:
Pm = Pm_1 + (1-Pm_n_1)*(1-r)*r^n
其中:
- P0~Pn_1的概率为0;
- Pn的概率为r^n
Python代码
#coding:utf-8
#!/usr/bin/env python
import math
def calculate(r,m,n):
if (m <= (n-1)):
return 0
if m == n:
return math.pow(r, n)
Pm_1 = calculate(r,m-1,n)
Pm_n_1 = calculate(r,m-n-1,n)
Pm = Pm_1 + (1-Pm_n_1)*(1-r)*math.pow(r, n)
return Pm
if __name__ == '__main__':
r = 0.9
m = 100
n = 10
Pm = calculate(r,m,n)
print Pm
部分结果实测统计
r | m | n | Pm |
---|---|---|---|
0.1 | 100 | 10 | 8.20E-09 |
0.2 | 100 | 10 | 7.48E-06 |
0.3 | 100 | 10 | 0.000377858 |
0.4 | 100 | 10 | 0.005754147 |
0.5 | 100 | 10 | 0.044137229 |
0.6 | 100 | 10 | 0.204909875 |
0.7 | 100 | 10 | 0.580083848 |
0.8 | 100 | 10 | 0.934202784 |
0.9 | 100 | 10 | 0.999681084 |