筆記-概率與期望
阿新 • • 發佈:2022-06-05
概率與期望
我們把隨機試驗中的某種結果稱為樣本點,所有樣本點稱為樣本空間。隨機事件即為樣本空間的子集,即有若干樣本點構成的子集,隨機變數是把樣本點對映為實數的函式,分為離散和連續兩種,我們主要討論離散概率。
概率
對於樣本空間 \(S\) 隨機事件 \(A\),若 \(P(A) \ge 0\),\(P(S)=1\),\(A_1,A_2\dots\) 不相交,\(\sum P(A_i)=P(U A_i)\) 則稱 \(P(A)\) 為隨機事件 \(A\) 發生的概率。
通俗來講 \(P(A)=\frac{A發生的情況}{所有情況}\)。
期望
若隨機變數的取值有 \(x_1,x_2\dots\),對於每個取值的概率為 \(p_1,p_2\dots\)
舉個例子,投兩個色子,期望得到多少點。
樣本空間是由 \(36\) 形如 \((a,b)\) 的樣本點構成的。隨機變數的取值為 \(2,3,\dots,12\),概率分別為 \(\frac{1}{36},\frac{1}{18},\dots,\frac{1}{36}\),可以算得其期望為 \(E(x)=7\)。
也就是說投兩個色字,我們期望得到的數是 \(7\)。
性質
\(E(aX+bY)=a \times E(X) + b \times E(Y)\)。
數學期望是個線性函式。
通過這個性質我們可以很容易地解決上述問題。設 \(X\)
例題
綠豆蛙的歸宿
設 \(dp[x]\) 代表 \(x\) 到 \(n\) 的期望距離,根據期望的定義和性質,有 \(dp[x]=\sum_{(x,y) \in E} \frac{dp[y]+val(x,y)}{deg_x}\)。建反圖跑拓撲,放的時候只放 \(n\),顯然\(dp[n]=0\)。
#include <bits/stdc++.h> using namespace std; const int N = 100010; template <typename T> void read(T &x) { T f = 1; char ch = getchar(); for (; '0' > ch || ch > '9'; ch = getchar()) if (ch == '-') f = -1; for (x = 0; '0' <= ch && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0'; x *= f; } struct node{ int pre, to, val; }edge[N << 1]; int head[N], tot; int n, m, in[N], deg[N]; double dp[N]; queue<int> q; void add_edge(int u, int v, int l) { edge[++tot] = node{head[u], v, l}; head[u] = tot; } int main() { read(n); read(m); for (int i = 1, u, v, l; i <= m; i++) { read(u); read(v); read(l); add_edge(v, u, l); in[u]++; deg[u]++; } q.push(n); while (!q.empty()) { int x = q.front(); q.pop(); for (int i = head[x]; i; i = edge[i].pre) { #define y edge[i].to; dp[y] += 1.0 * (dp[x] + edge[i].val) / deg[y]; in[y]--; if (in[y] == 0) q.push(y); #undef y } } printf("%.2lf", dp[1]); return 0; }
更多例題後面再補吧。