为保证设备的正常运行,必须配备一定数量的设备维修人员,现有同类设备300台,且各台设备工作相互独立,任一时刻发生故障的概率都是0.01,假设一台设备的故障由一人进行修理,问至少应配备多少名修理人员,才能保证设备发生故障后能得到及时修理的概率不小于0.99?
当N大,p小时,可以用此公式,是近似的二项分布计算,相对的计算量会少一些。
当然,对于此题,精确计算应该是用二项分布,但是计算C(n,k)过大,会溢出。
下面的程序得出至少需要8名人员。
#include <iostream>
#include <math.h>
using namespace std;
int m[101] = {1,1};
int main() {
int N = 300;
double p = 0.01;
double r = N * p;
//计算阶乘, 预测结果不会太大,计算到50即可
for(int i=2; i<=50; i++)
m[i] = m[i-1] * i;
double ke = exp(-r);
double ans = 0;
//使用泊松分布公式计算
for(int i=0; i<300; i++){
ans += ke * pow(r, i) / m[i];
if(ans >= 0.99){
cout << i<< endl;
break;
}
}
return 0;
}