1 2 3 4 5五个数 出现的概率为0.03 0.03 0.03 0.45 0.45 如何用MATLAB 表示按这个概率从1到5抽取一个数
你好,可以先生成一个从0到1的随机数a,然后分别跟
0.03
0.03+0.03
0.03+0.03+0.03
0.03+0.03+0.03+0.45
这四个数比较,然后小于0.03就是1,否则小于0.06就是2,否则小于0.09就是3,否则小于0.54就是4,最后剩下的可能就是5。
注意你给的概率之和等于0.99,不等于1,所以我这里假设出现5的概率是0.46
代码这样写
a = rand(1);
if(a<0.03)
n = 1;
elseif(a<0.06)
n=2;
elseif(a<0.09)
n=3;
elseif(a<0.54)
n=4;
else
n=5;
end
n
最后n就是你需要的那个随机数字
当然你也可以用matlab自带的函数实现!
n = randsrc(1,1,[1,2,3,4,5; 0.03,0.03,0.03,0.45,0.46]) %生成1行1列按照概率的1到5
可以先生成一个随机数,记作
n = rand(1);
然后分别与各数的概率比较和相减
例如当n = 0.1时,n > 0.03,跳过1,并令n = n - 0.03 = 0.1 - 0.03 = 0.07,
又有n>0.03,跳过2,并令n = n - 0.03 = 0.07 - 0.03 = 0.04,
又有n>0.03,跳过3,并令n = n - 0.03 = 0.04 - 0.03 = 0.01,
此时n<0.45,返回4
function Result = FunctionNameHere(Numbers,Probabilities)
n = rand(1);
for i= 1 : length(Numbers)
if n < Probabilities(i)
Result = Numbers(i);
return;
else
n = n - Probabilities(i);
end
end
end