條件概率公式
在事件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...