蒙地卡羅法與隨機化方法

反轉換取樣(inverse-transform sampling)

你的產生器只會給你均勻數——在 0 到 1 之間均勻散開的分數,就像一個完全公平的轉盤。但你的模擬需要「別種」形狀的數字:指數分布、常態分布、某個自訂分布。反轉換取樣就是那個俐落的把戲,只要你能把該分布的累積函數反轉,它就能把一個均勻數彎成你要的任何分布。

配方只有幾個字:U 進、X 出。取目標分布的累積分布函數 F(x) = P(X <= x),它由 0 升到 1。抽一個均勻數 u 落在 [0, 1),然後解 F(x) = u 求 x——也就是令 X = F^{-1}(u),反累積分布函數(又稱分位數函數)。神奇之處在於 X 此時恰好服從分布 F。直觀上,F^{-1} 把均勻的線拉伸,使更多均勻質量落在目標想要更多機率的地方:F 攀升陡峭(高密度)的區域分到 [0, 1) 輸入的一大塊,於是點在那裡堆積。以速率 lambda 的指數分布為例,F(x) = 1 - e^(-lambda x) 反轉成 X = -ln(1 - u) / lambda,一行就是取樣器。

它精確又優雅,只要反累積分布函數有閉式或可廉價計算(指數、柯西、幾何分布,以及任何用累積搜尋的離散表),它就是黃金標準。誠實的限制在於那句「只要」:對許多重要分布——常態分布是頭號例子——F 沒有閉式反函數,所以單純反轉每抽一個樣本就得做一次數值求根或特殊函數計算,可能很慢。這正是為何常態分布有 Box-Muller 轉換這類專門技巧,也是為何 F 棘手時要退而求其次用拒絕取樣。

要取樣平均壽命為 5(速率 lambda = 1/5)的指數分布:抽 u = 0.3,算 X = -ln(1 - 0.3) / (1/5) = -5 * ln(0.7) = 1.78。抽 u = 0.9,得 X = -5 * ln(0.1) = 11.5。小的 u 給出短壽命,接近 1 的 u 給出長壽命——恰好是指數分布的偏態。

把一個均勻數送過反累積分布函數,出來的就是目標分布。

反轉法需要反累積分布函數,而許多分布(尤其是常態分布)沒有閉式反函數。當 F^{-1} 只能數值求得時,每個樣本都要付一次求根的代價——抽幾個沒問題,抽上百萬個就很貴。

又稱
inverse-CDF methodinversion methodthe quantile method逆變換取樣逆累積分布函數法