精華區beta MATLAB 關於我們 聯絡資訊
※ 引述《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