產生任意機率分布的亂數的公式推導和驗證?

2017-05-20 12:20 pm
我在底下網頁看見能產生任意機率分布的亂數的公式
https://www.ptt.cc/man/C_and_CPP/DB9B/DE78/M.1198667412.A.173.html

公式
integral[a,p]f(x)dx=u*integral[a,b]f(x)dx
u:0到1之間的亂數
integral[a,b]:積分從a到b
f(x):機率密度函數
p:要產生的亂數

這公式是怎麼出來的?

我參考過底下的網頁,但還是想不出來。
https://en.wikipedia.org/wiki/Inverse_transform_sampling
https://en.wikipedia.org/wiki/Probability_integral_transform

圖片中a到b的直線方程式為
f(x)=2/(b-a)^2*(x-a)
按照維基百科的解法
設累積分布函數F(x)=integral[a,p]f(x)dx=u
則p=(u*(b-a)^2)^0.5+a

但網頁中是把f(x)=x直接帶入公式,得到
p=(u*(b^2-a^2)+a^2)^0.5
哪個才是對的呢?
更新1:

設u=0.81,a=1,b=2 (u*(b-a)^2)^0.5+a=1.9 (u*(b^2-a^2)+a^2)^0.5=1.852 兩個公式產生的值不同,同樣的u應該會產生同樣的p才對吧? 既然integral[a,b]f(x)dx=1,作者為何要故意加在式中?

回答 (1)

2017-05-24 4:16 am
✔ 最佳答案
Inverse distribution transform:
設 F(x) 為一連續型單變量 distribution function, 其 support 為
一區間 [a,b]. 則在此區間 F 有 inverse, 以 G 表示之. 即:

對任意 x in [a,b], G(F(x)) = x;
對任意 p in [0,1], F(G(p)) = p.

今若 U 是 [0,1] 間 uniform distributed 的隨機變數, 則 Y = G(U)
具有 distribution function F.



G 為 F 之 inverse, 也就是 p = F(x) iff. x = G(p), 或說是 p 和
x 之間具有 p = F(x) = ∫_a^x dF(t) = ∫_a^x f(t) dt 的關係,其
中 f 為 F 之 density function.


因此, 欲產生 distribution function 為 F 之 pseudo random number,
可考慮先產生 [0,1) 之 uniform PRN, 再做 Y = G(U) 之轉換. 沒有
inverse function G 之 explicit form 時, 就是解方程式 F(x) = U.
用 p.d.f. 表示, 就是解 ∫_a^x f(t) dt = U. (x 為方程式之 unknown.)


但有時我們只有分布的 "形" 而不是 distribution function 或 p.d.f.,
也就是 ∫_R f(x) dx ≠ 1. 但基於機率的基本特性, 在
∫_R f(x) dx 為 finite 的條件下, 我們知道 f(x)/∫_R f(t) dt
就是所要的 p.d.f.. 所以, 上列方程式就成為
∫_a^x f(t) dt / ∫_a^b f(t) dt = p
也就是
∫_a^x f(t) dt = p * ∫_a^b f(t) dt
這也就是所引 BBS 文章中寫
integral[a,p]f(x)dx=u*integral[a,b]f(x)dx
的緣故.


如 p.d.f. 是 f(x) = 2(x-a)/(b-a)^2, 則 d.f. 是
F(x) = (x-a)^2/(b-a)^2 in a < x < b
而 F(x) = p 即 x = a + √[p(b-a)^2].

若 p.d.f. 是 f(x) = 2x/(b^2-a^2), 則 d.f. 是
F(x) = (x^2-a^2)/(b^2-a^2) in 0 ≦ a < x < b.
此時解 F(x) = p 得到的是 x = √[a^2+p(b^2-a^2)].

以 p.d.f. 的 "形" 來說, 前者是 f*(x) = x-a in a < x < b,
後者是 f*(x) = x in 0 ≦ a < x < b. 除非 a = 0, 否則二者有一
個垂直差距 a 的平移. 或者說, 前者有 x-intersection a, 而後者
卻通過原點.

合二者為一 general form:
f*(x) = x - h, h ≦ a < x < b,
則 ∫_a^b f*(x) dx = [(b-h)^2-(a-h)^2]/2, 故 d.f. 為
F(x) = [(x-h)^2-(a-h)^2]/[(b-h)^2-(a-h)^2]/2
而 p.d.f. 為
f(x) = 2(x-h)/[(b-h)^2-(a-h)^2].
方程式 F(x) = p 之解為
x = h + √{ (a-h)^2 + p [(b-h)^2-(a-h)^2]}

而如果 U 是一個 [0,1) uniform distributed 的 random variable,
則 Y = h + √{ (a-h)^2 + U [(b-h)^2-(a-h)^2]} 就是一個具有上
述 distribution function F 或 p.d.f. f 之 r.v..


收錄日期: 2021-05-04 02:21:31
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20170520042000AAVlmwM

檢視 Wayback Machine 備份