woojean的博客 模仿、熟练、超越

执行若干次某任务,某概率事件连续发生指定次数的概率研究

2018-09-05

问题

单独执行一次某任务,事件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

公众号
文章目录