多維隨機數的生成問題 解決方法 隨機數和為1

2021-06-15 21:09:16 字數 1782 閱讀 6400

今天突然發現 問題其實很簡單

x=rand(1,n)   生成[0,1]上均勻隨機書...

y=x/sum(x)............          就行了

今天寫隨機模擬的程式遇到了乙個問題;

x1,x2,...,xn均勻分布的隨機數,xi>=0;

x1+x2+.....xn=1;

如何生成這樣隨機數的問題,假設n=5;

而且x1,..,x5 相互之間選取是公平的!!!

一開始,大家都會想到乙個方法,

x1 從[0,1]      中隨機取;

x2 從[0,1-x1]   中隨機取;

......

x5 從[0,1-x1-..-x5].

我試了一下20個

0.3410    0.2842    0.0677    0.1643    0.0444

0.0097    0.3013    0.6653    0.0018    0.0135

0.2369    0.1436    0.3208    0.0177    0.2600

0.9462    0.0409    0.0027    0.0086    0.0012

0.4977    0.2503    0.2106    0.0100    0.0303

0.8153    0.1132    0.0377    0.0184    0.0097

0.8425    0.1087    0.0155    0.0201    0.0047

0.1197    0.2955    0.0655    0.4742    0.0046

0.7358    0.0235    0.0929    0.1437    0.0014

0.8553    0.1155    0.0127    0.0145    0.0016

0.0921    0.2226    0.2571    0.0888    0.2629

0.5569    0.1414    0.0450    0.0263    0.0640

0.3176    0.1832    0.4823    0.0063    0.0002

0.1323    0.7798    0.0608    0.0202    0.0032

0.1931    0.2242    0.1681    0.4143    0.0001

0.2613    0.5561    0.0190    0.1222    0.0039

0.1805    0.2741    0.0925    0.0702    0.0770

0.5199    0.4443    0.0165    0.0056    0.0119

0.6232    0.2762    0.0797    0.0141    0.0062

0.0348    0.8789    0.0478    0.0056    0.0113

和  8.3120    5.6574    2.7602    1.6471    0.8122

平均0.4156    0.2829    0.1380    0.0824    0.0406

這樣做是有問題的,對於x5的期望幾乎是x1的10倍.

我改用最保守的方法,x1,...x5 都是[0,1]上的隨機數,

如果 x1+x2+.....xn=1;我接受, 不等於就放棄

我程式設計試了一下  0.995學概率統計的因該有更好的辦法吧,賜教一下!

不知道大家有什麼其他好的辦法呢? [email protected] (鄭志勇)  

多維隨機數的生成問題

今天寫隨機模擬的程式遇到了乙個問題 x1,x2,xn均勻分布的隨機數,xi 0 x1 x2 xn 1 如何生成這樣隨機數的問題,假設n 5 而且x1,x5 相互之間選取是公平的!一開始,大家都會想到乙個方法,x1 從 0,1 中隨機取 x2 從 0,1 x1 中隨機取 x5 從 0,1 x1 x5 ...

C Random迴圈生成隨機數重複問題解決方案

c random迴圈生成隨機數重複問題解決方案 1.當我們通過random生成隨機數時,習慣的寫法如下 int a new random next 0,100 然後生成乙個資料數沒有任何問題,但是 修改如下 for int i 0 i 1000 i 問題 你會發現生成的隨機數居然完全一樣。腫麼辦呢?...

乙個C 隨機數的問題,解決隨機數重複

預設情況下,net的隨機數是根據系統時間來生成的,如果電腦速度很快的話,生成的隨機數就會一樣。random rnd new random int rndnum rnd.next int 取值範圍內的隨機數 int rndnum rnd.next 10 得0 9的隨機數 int rndnum rnd....