※ 引述《jeseph (啦啦啦~)》之銘言:
: ※ 引述《PPUDDING (布丁)》之銘言:
: : 目標:抽取亂數
: : 條件:所有亂數皆介於 -1~1之間
: : 所有亂數的和要等於1
: : 問題:我先抽好 -1~1 之間的uniform 亂數
: : 但是我在處理亂數和要等於一的條件時
: : 是利用(各亂數)除以(亂數總和)=(調整後亂數)的方式
: : 此時調整後的亂數和應當等於1
: : 但這時候如果亂數和剛好接近0的話
: : 會出現(調整後的亂數)會有絕對值大於1的情形
: : 此時又不符合第一個條件
先取妳要的亂數個數....然後在最後的部份把亂數加總...
再除於自己....有點權重的感覺...
不知道這樣有沒有符合妳的要求~
我的做法就跟你一樣嚕(可能是我沒說明清楚)
這種權重的算法比較適合用在所有的數都為正數時的情形
試試這個
假如我用rand(1,5)抽出五個介於 0~1 uniform亂數
再將之乘上2減去1 (範圍從 0~1 變成 0~2 再變成 -1~1)
假設我得到的亂數為 0.902 0.8 -0.6 -0.2 -0.9
亂數和為0.902+0.8-0.6-0.2-0.9 = 0.02 相當接近 0
將個別亂數除以亂數和(如0.902/0.02)分別為45.1 40 -30 -10 -45
得到的數字大於我的要求介於 -1~1 之間
所以這就是我的問題嚕
(ps.只要亂數和不接近0,權重的方式基本上是可以用的)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.150.94