一、初識概率生成函數
概率生成函數是概率論和離散數學中經常用到的工具,它可以將離散的隨機變量用一個生成函數的形式表示出來。對於一個隨機變量 $X$,它的概率生成函數可以用下面這個公式來表示:
$$ G_X(s) = \sum_{x=0}^{\infty} P(X=x) s^x $$
其中 $P(X=x)$ 是隨機變量 $X$ 取值為 $x$ 的概率。從公式中可以看出,如果我們知道了一個離散隨機變量的概率生成函數,那麼我們就可以通過求導、積分等運算來獲取它的各種統計量,比如期望、方差等。
二、概率生成函數的特性
概率生成函數有許多有用的特性,下面我們分別來介紹幾個常用的特性。
1、獨立隨機變量的生成函數的乘積
如果有兩個獨立的離散隨機變量 $X$ 和 $Y$,那麼它們的概率生成函數的乘積就等於它們對應的概率生成函數的積,即 $G_{XY}(s) = G_X(s) G_Y(s)$。
// 代碼示例:計算兩個獨立隨機變量的生成函數的積 void multiply_generating_function(vector& g1, vector& g2, vector& g3) { int n = min(g1.size(), g2.size()) - 1; g3.resize(n + 1); for (int i = 0; i <= n; i++) { g3[i] = 0; for (int j = 0; j <= i; j++) { g3[i] += g1[j] * g2[i - j]; } } }
2、多個隨機變量的加權生成函數的和
假設有 $n$ 個離散隨機變量 $X_1, X_2, …, X_n$,它們分別有不同的概率生成函數 $G_1(s), G_2(s), …, G_n(s)$,以及對應的概率 $p_1, p_2, …, p_n$。那麼它們的加權生成函數的和就可以表示為:$G(s) = \sum_{i=1}^n p_i G_i(s)$。
// 代碼示例:計算多個隨機變量的加權生成函數的和 void sum_generating_function(vector& g_list, vector& p_list, vector& g_sum) { int n = g_list.size(); int m = g_list[0].size() - 1; g_sum.resize(m + 1); for (int i = 0; i <= m; i++) { g_sum[i] = 0; for (int j = 0; j < n; j++) { g_sum[i] += g_list[j][i] * p_list[j]; } } }
3、泊松分布的概率生成函數
泊松分布是一種常見的離散概率分布,它的概率生成函數可以用以下公式表示:$G(s) = e^{\lambda(s-1)}$,其中 $\lambda$ 是泊松分布的參數。
// 代碼示例:計算泊松分布的生成函數 void poisson_generating_function(double lambda, vector& pgf) { int m = 1000; // 假設只計算前 1000 項 pgf.resize(m + 1); for (int i = 0; i <= m; i++) { pgf[i] = exp(lambda * (i - m) / m); } }
三、應用舉例
概率生成函數在概率論、組合數學等領域有着廣泛的應用,下面我們分別介紹幾個例子。
1、隨機遊走的期望值
隨機遊走是一種經典的概率問題,它的概率生成函數可以表示為:$G(s) = \frac{1}{2} (s + \sqrt{s^2-4p(1-p)}) + \frac{1}{2} (s – \sqrt{s^2-4p(1-p)})$,其中 $p$ 是隨機遊走向右的概率。
我們可以通過對概率生成函數求導來計算隨機遊走的期望值。具體地,設概率生成函數為 $G(s)$,那麼隨機遊走的期望值等於:$E[X] = G'(1)$。
// 代碼示例:計算隨機遊走的期望值 double random_walk_expectation(double p) { double t = sqrt(1 - 4 * p * (1 - p)); double s1 = 0.5 * (1 + t) / p; double s2 = 0.5 * (1 - t) / p; return s1 * s1 + s2 * s2; }
2、組合恆等式的證明
組合恆等式是組合數學中重要的恆等式之一,它的概率生成函數可以表示為:$(1+s)^n = \sum_{k=0}^n {n \choose k} s^k$。
我們可以通過對概率生成函數進行求導來證明這個恆等式。具體地,設概率生成函數為 $G(s)$,那麼我們可以使用二項式定理來展開 $(1+s)^n$,然後對其求導即可得到 $\sum_{k=0}^n k{n \choose k} s^{k-1}$。同時,我們也可以對 $\sum_{k=0}^n {n \choose k} s^k$ 求導,然後做一些簡單的變形就可以得到相同的結果。
3、組合遊戲的勝率
組合遊戲是一種常見的博弈論問題,它的玩法是兩個人輪流從 $n$ 個數字中取數,取的時候不能取已經被取過的數字,最後無法取數的人輸。我們假設先手能夠取走 $m$ 個數字,那麼勝率可以根據 $m$ 和 $n$ 來計算,具體公式如下所示:$P = \frac{1}{2} (1 + G_{(n-m)/n}(P)^m)$。
其中 $G_{(n-m)/n}(P)$ 是取到第 $m$ 個數字的時候,還有 $(n-m)$ 個數字的概率生成函數。我們可以通過一些數學推導來得到這個公式,具體的計算方法可以使用二分法等數值方法。
結語
概率生成函數是一種非常有用的工具,在許多應用領域都能夠發揮出重要的作用。希望本文介紹的內容對讀者有所啟發,讓大家能夠更好地應用概率生成函數來求解各種概率問題。
原創文章,作者:ZCNZJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/372418.html