Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。
產生任意機率分布的亂數的公式推導和驗證?
我在底下網頁看見能產生任意機率分布的亂數的公式
https://www.ptt.cc/man/C_and_CPP/DB9B/DE78/M.11986...
公式
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_sa...
https://en.wikipedia.org/wiki/Probability_integral...
圖片中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
哪個才是對的呢?
設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 個解答
- ?Lv 74 年前最愛解答
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..