我有两个子例程要执行,一个子例程的概率为p1,另一个子例程的概率为p2s.t。 p1 + p2 = 1,我正在通过以下方法解决问题:
say p1=0.6, p2=0.4, i need to perform the selection between 2 subroutine 10 times
out = randsrc(1,10,[1,2;0.6,0.4]);
然后选择与输出矩阵中的1对应的例程1和与输出矩阵中的2对应的例程2这里我得到输出1:2 1 2 2 1 2 1 2 1 1 1 再次执行则给出:1 1 2 2 2 2 1 2 1
期望的输出是1倍,6倍和2倍,4倍,但是输出不符合预期。
s = randsample([1,2],10,true,[0.6,0.4]);
使用例程:
s=[];
for i=1:10
c = rand
if c<=0.6
select = 2;
else
select = 1;
end
s = [s,select];
end
方法2和3也在方法1中给出了结果,有人可以帮助我找出原因吗?还是将结果解释为遵循概率的方式?或其他解决此问题的方法。
我想10个样本不足以代表您期望的60%/ 40%分布。
[抛硬币10次时,获得5个正面和5个反面的可能性不是很高。
尝试1000000个值:
out = randsrc(1, 1000000, [1,2;0.6,0.4]);
现在分布应该非常接近60%/ 40%:
[sum(out==1), sum(out==2)]
ans =
599709 400291
您也可以使用rand
:
x = rand(1, 1000000);
[sum(x <= 0.6), sum(x > 0.6)]
ans =
600261 399739