matlab 随机数权重,MATLAB中加权随机数
R = randsample([1 2 3], N, true, [0.3 0.1 0.2])
a = 1:3; %# possible numbers
w = [0.3 0.1 0.2]; %# corresponding weights
N = 10; %# how many numbers to generate
R = a( sum( bsxfun(@ge, rand(N,1), cumsum(w./sum(w))), 2) + 1 )
說明:
考慮間隔[0,1]。我們為列表(1:3)中的每個元素分配與每個元素的權重成比例的長度的子間隔;因此1個取值和間隔長度為0.3 /(0.3±0.1±0.2),與其他值相同。
現在如果我們在[0,1]上產生具有均勻分布的隨機數,則[0,1]中的任何數字具有相等的被選擇的概率,因此子間隔的長度決定隨機數落入的概率每個間隔。
這匹配我在上面做的:選擇一個數字X?U [0,1](更像N個數字),然后以矢量化的方式找到它落入的間隔。
您可以通過生成足夠大的序列N = 1000來檢查上述兩種技術的結果:
>> tabulate( R )
Value Count Percent
1 511 51.10%
2 160 16.00%
3 329 32.90%
它們或多或少地符合標準化權重w./sum(w)[0.5 0.16667 0.33333]
總結
以上是生活随笔為你收集整理的matlab 随机数权重,MATLAB中加权随机数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本桌面图标大小怎么调节(华为电脑桌面
- 下一篇: 刺激战场国际服需要加速器吗