概率與數學期望
前言:
曾經有人問過學長,是不是概率期望基本上都是用來做dp的
學長:當然不是了
然而我覺得,有很大一部分的概率期望都是與dp有關的
離散概率初步
一個經典的例子就是拋硬幣:
連續拋3次硬幣,恰好有兩次正面的概率有多少:
拋3次硬幣,一共有8可能:HHH , HHT , HTH , HTT , THH ,THT , TTH ,TTT
這八種情況的概率是相等的
這裡的{HHH , HHT , HTH , HTT , THH ,THT , TTH ,TTT}用專業術語講就是樣本空間
“恰好有兩個正面”這個事件可以表示為:A={HHT , HTH , THH}
所以P(A)=3/8
接下來要說的就是一個經典問題:生日問題
一共有23個人,至少兩個人的生日相同的概率超過50%,為了簡單起見,每個人的生日都不是2月29日
實際上這個例子和拋硬幣有異曲同工之妙
每個人的生日是365天中等概率選擇的,因此樣本空間是|S|=365^23
接下來要計算“至少兩個人的生日相同”,這個不大好統計,所以我們遵循原則:
正難則反
先計算出任何兩個人的生日都不同,然後用總數減去就好了,於是有式子
在實際計算的時候,A(365,23)和365^23都是無法直接計算的
但是概率是一個不超過1的double,並且此處不需要太高的精度,所以我們直接計算:
double P(int n,int m)
{
double ans=1.0;
for (int i=0;i<m;i++) ans*=(n-i);
return ans;
}
double birthday(int n,int m)
{
double ans=P(n,m);
for (int i=1;i<=m;i++) ans/=n;
return 1-ans;
}
但是如果m太大,上面那個程式就會爆掉
我們的解決方法是邊乘邊除:
double birthday(int n,int m)
{
double ans=1.0;
for (int i=0;i<m;i++) ans*=(double)(n-i)/n;
return 1-ans;
}
這就告訴我們一個很重要的道理:
和int,ll一樣,double型別也要時刻注意溢位
條件概率
公式:P(A|B)=P(AB)|P(B)
P(A|B):在事件B發生的前提下,事件A發生的概率
P(AB):事件A和B同時發生的概率
貝葉斯公式
P(A|B)=P(B|A)*P(A)/P(B)
這也是條件概率中很重要的一個公式
全概率公式
把樣本空間S分成若干個不想交的部分B1,B2,B3,…,Bn,
則P(A)=P(A|B1)*P(B1)+P(A|B2)*P(B2)+…+P(A|Bn)*P(Bn)
這裡的P(A|B)是指B事件發生的條件下,事件A發生的概率
其實ta的思想很簡單:
比如,參加NOI,得到金牌,銀牌,銅牌,當炮灰的概率分別是0.1,0.2,0.3,0.4,
在這種情況下,保送上清華的概率分別是1.0,0.8,0.5,0.1,
則被報送的總概率是0.1*1.0+0.2*0.8+0.3*0.5+0.4*0.1
使用全概率公式的關鍵就是劃分時間空間
只有把所有情況不重複,不遺漏的進行分類,
並計算出每個事件的概率,才能得出正確的答案
數學期望
簡單地說,隨機變數X的數學期望EX就是所有可能值按概率加權的和
比如一個隨機變數有1/2的概率等於1,1/3的概率等於2,1/6的概率等於3
那麼這個隨機變數的數學期望為
1/2*1+1/3*2+1/6*3
在非正式場合中,可以說這個隨機變數“在平均情況下的值”為1/2*1+1/3*2+1/6*3
在解決和數學期望相關的題目時,大多數是可以直接考慮定義法解決
求出各個取值和對應的概率
當然,如果是等概率事件(所有事件的概率完全相等)
我們可以用:
各個情況之和/總情況數量(相當於求一個平均值,不是一般的好用啊)
如果遇到困難,我們可以考慮一下兩個法寶:
- 期望的線性性質:
有限個隨機變數之和的數學期望等於每個的數學期望之和
即 E(X+Y)=EX+EY - 全期望公式:
類似全概率公式,把所有情況不重複,不遺漏的分成若干類,每個計算數學期望,
最後把這些數學期望按照每類的概率加權求和
實際上,我們最常用的就是
全概率公式
把樣本空間S分成若干個不想交的部分B1,B2,B3,…,Bn,
則P(A)=P(A|B1)*P(B1)+P(A|B2)*P(B2)+…+P(A|Bn)*P(Bn)
這裡的P(A|B)是指B事件發生的條件下,事件A發生的概率全期望公式
類似全概率公式,把所有情況不重複,不遺漏的分成若干類,每個計算數學期望,
最後把這些數學期望按照每類的概率加權求和