全概率公式

全概率公式

引例

先举个例子,小张从家到公司上班总共有三条路可以直达(如下图),但是每条路每天拥堵的可能性不太一样,由于路的远近不同,选择每条路的概率如下:

(P(L_1)=0.5,P(L_2)=0.3,P(L_3)=0.2)

每天上述三条路不拥堵的概率分别为:

(P(C_1)=0.2,P(C_2)=0.4,P(C_3)=0.7)

假设遇到拥堵会迟到,那么小张从 (mathcal{Home})(mathcal{Company}) 不迟到的概率是多少?

其实不迟到就是对应着不拥堵,设事件C为到公司不迟到,事件为选择第i条路,则:

[egin{aligned} P(C)&=P(L_1) imes P(C|L_1) + P(L_2) imes P(C|L_2)+P(L_3) imes P(C|L_3)\ &=P(L_1) imes P(C_1) + P(L2) imes P(C_2)+P(L_3) imes P(C_3) end{aligned} ]

全概率就是表示达到某个目的,有多种方式(或者造成某种结果,有多种原因),问达到目的的概率是多少(造成这种结果的概率是多少)

全概率公式:

设事件(L_1, L_2 cdots L_n)是一个完备事件组,则对于任意一个事件(C),若有如下公式成立:

[egin{aligned} P(C)&=P(L_1) imes P(C|L_1) + P(L_2) imes P(C|L_2)+cdots +P(L_n) imes P(C|L_n) \ &= sum^n_{i=1} P(L_i)P(C|L_i) end{aligned} ]

那么就称这个公式为全概率公式。

麻球繁衍

题意

一个麻球只能存活一天,这天他有 (p_i) 的概率产生 (i) 个后代((0 leq i < n)) 现在你有 (k) 个麻球,求(m) 天之后全部死亡的概率(在这之前全部死完也算)。

思路

我们设事件 (L_0, L_1cdots L_{n-1}) 分别为产生 (0, 1cdots n - 1) 个后代, (C) 为全部死亡的概率,则 (P(L_i)=p_i) ,每一天麻球是否死亡相互独立,即 (C) ~ (B(p, n))

(f(i))(1) 只麻球 (i) 天内死亡的概率,则 (P(C|L_i)=f(i-1)^j)

由全概率公式

[egin{aligned} f(i)&=p_0+p_1f(i-1)+p_2f(i-1)^2+cdots+p_{n-1}f(i-1)^{n-1}\ &=sum^{n-1}_{j=0}p_jf(i-1)^j\ end{aligned} ]

所求答案即为 (f(m)^k)

Code

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
int n, k, m;
double p[1005], f[1005];
int main()
{
	cin >> n >> k >> m;
	for(int i = 0; i < n; i++)
		cin >> p[i];
	f[1] = p[0];
	for(int i = 2; i <= m; i++)
		for(int j = 0; j < n; j++)
			f[i] += p[j] * pow(f[i - 1], j);
	cout << fixed << setprecision(7) << pow(f[m], k);
return 0;
}

原文地址:https://www.cnblogs.com/xuanfly/p/11813540.html