概率論應用

2022-09-17 21:06:23 字數 3502 閱讀 8285

條件概率公式

在事件b已經發生的條件下,a發生的概率 \(p(a|b) = \frac\)

全概率公式

\(p(b) = p(bω) = p[b(\bigcup_^a_i)] = p(\bigcup_^a_i b) = \sum_^p(a_ib)=\sum_^p(a_i)p(b|a_i)\)

貝葉斯公式

\(p(a_i | b) = \frac = \frac\)

由\(p(b) = \sum_^p(a_i)p(b|a_i)\)得

\(p(a_i | b) = \frac^p(a_i)p(b|a_i)}\)

期望

題意: 有n扇門,每次你可以選擇其中一扇。xi為負值的門帶你abs(xi)後又回到原點。xi為正值

的門則帶你離開迷宮。每次你都沒有經驗沒有記憶。選擇每扇門的概率相等。求走出迷宮

的時間期望值。

思路:解法一: 假設走出迷宮的期望值為e,

選擇到正數的門,走出的期望值為 $t1 \frac $

選擇到負數的門,走回到起點(起點走出的期望為e),所以走出的期望值為 \((t2 + e) \frac\)

於是\(e =t1 \frac+(t2 + e) \frac\)

化簡一下 $e = \frac} $

解法二:

走出的時間期望值e = 走出去次數的期望 × 平均時間

假設正的門有\(k\)個,則走出的概率為\(\frac\),於是走出去的次數的期望為\(\frac \)(列式子,錯位相減,求極限即可得出)

平均時間 = \(\frac}\)

e = \(\frac \frac} = \frac}\)

#include#define ll long long

using namespace std;

int gcd(int x,int y)

int main()

^\)#include#define ll long long

#define db long double

using namespace std;

const int n = 1e2 + 10;

double dp[n];

int main()

ans += x * dp[i];

}printf("case %d: ",cas++);

printf("%.12lf\n",ans);

}return 0;

}

題意:給乙個數d,每次可以變成它的因子,求變成1的期望次數 \(1<=d<=10^5\)

思路: \(設dp[x]為x變成1的期望次數, x的因子個數為cnt,則dp[x] = \frac + cnt}\)

解得 $ dp[x]= \frac + cnt}$

\(預處理dp陣列即可,複雜度nlogn\)

const int n = 1e5 + 10;

double dp[n];

void init()

}for(int j = 1;j * j <= i;j++)}}

dp[i] += cnt;

dp[i] /= cnt - 1;

}}int main()

return 0;

}

題意:給一枚n面的骰子,求期望次數使得所有n面都至少朝上過一次。

思路: \(dp[i][j] 表示i面的骰子的j面至少朝上過一次的期望次數\)

\(dp[i][1] = 1\)

\(dp[i][j] = \frac(dp[i][j]+1) + \frac(dp[i][j-1] + 1) (2<=j<=i)\)

化簡得\(dp[i][j] = dp[i][j-1] + \frac\)

於是答案就等於\(\sum_^\frac\)

題意:乙個強盜想要搶劫幾家銀行,每家銀行有一定的存款數,且每搶劫一家銀行都有一定概率被抓獲,問在給定的安全概率下,強盜所能搶劫到的最大錢數。且搶劫各個銀行被抓的概率是相互獨立的。

思路: 容量為浮點數的揹包問題

由於這裡錢的總數比較小,把錢看成容量,dp[i]表示搶到錢i的最小被抓概率

從大到小列舉一下最抓概率小於安全概率的就是答案

若錢也為浮點數就不能這樣解了,這篇部落格講了連續值揹包的求解問題

const int n = 1e4 + 10;

double dp[n];

double p;

int n;

double p[n];

int w[n];

int main()

for(int i = 0;i <= sum;i++) dp[i] = 1000000;

dp[0] = 0;

for(int i = 1;i <= n;i++)

int ans = 0;

for(int i = sum;i >= 0;i--) if(dp[i] < p)

printf("case %d: %d\n",cas++, ans);

}return 0;

}

題意: 有乙個人在荒島上求生,島上有t只老虎,d隻鹿

每天隨機的會有兩隻動物相遇

>- 老虎和老虎相遇,相互殘殺,最後都會死亡

>- 老虎和人相遇,人被老虎吃了

>- 老虎和鹿相遇,鹿被老虎吃了

>- 鹿和鹿相遇,什麼也沒發生

>- 人和鹿相遇,人可以選擇吃或者不吃鹿

問你當人能肯定自己一定能存活下來的最大概率是多少?
思路: 首先奇數只老虎,人一定不能存活。

偶數只老虎相互殘殺最後變成0,那其實也就是求這個老虎相互殘殺變成0只的概率

從長遠來看,很久很久以後,鹿一定被老虎吃光了,那麼就只剩人和老虎了,這個時候就相當於每次選兩次老虎直到為0,即c(t,2) / c(t + 1,2)的累乘,因為這裡求的是概率,所以若干年後概率是不會變的,如果求的是年數的期望,就不可行了。

另一種更好想的做法就是dp[i][j]表示剩i只老虎j隻鹿,人存活的概率

考慮轉移每次要麼死兩隻老虎,要麼死乙隻鹿,死的這只鹿可以是老虎殺的,也可以是人殺的

#include#define ll long long

using namespace std;

const int n = 1001;

double dp[n][1001];

double c(int n)

int main()

/*memset(dp, 0, sizeof(dp));

for(int i = 0;i <= d;i++) dp[0][i] = 1;

for(int i = 1;i <= t;i++)

}*/double ans = 1;

while(t) ans *= 1.0 * (t - 1) / (t + 1),t -= 2;

printf("%.12lf\n",ans);

}return 0;

}

概率論學習

離散型隨機變數的值和概率的分布列表 在很多教材中,這樣的列表都被叫做離散型隨機變數的 概率分布 其實嚴格來說,它應該叫 離散型隨機變數的值分布和值的概率分布列表 這個名字雖然比 概率分布 長了點,但是對於我們這些笨學生來說,肯定好理解了很多。因為這個列表,上面是值,下面是這個取值相應取到的概率,而且...

概率論基礎

概率論 第一章 隨機事件及其概率 分為兩類 1.確定性現象 2.隨機現象 1.1隨機事件及其運算 1.隨機試驗與樣本空間 隨機試驗具有下列三個特徵 1 試驗可在相同條件下重複進行 2 試驗的結果不止乙個 3 每次實驗之前,不能判定哪乙個結果將會出現 用e表示隨機試驗。試驗e中的每乙個可能結果稱為基本...

概率論筆記

注 本文用 表示並運算,表示交運算,a 表示a的逆事件 樣本空間 乙個試驗中所有可能情況組成的集合 事件的關係與運算 a包含於b a發生 b發生 a並b a與b的和事件 a或b發生 a交b a與b的積事件 ab同時發生 a b a與b的差事件 a發生b不發生 a b互斥 不相容 a交b 空集 a b...