正如我在另一篇文章中看到的,关于以给定概率生成随机数,我发现了我在程序中使用的这个有用的代码:
r = rand;
prob = [0.5, 0.1, 0.4];
x = sum(r >= cumsum([0, prob]));
disp(x)
it gives
0.5 chance of 1
0.1 chance of 2
0.4 chance of 3
我已经根据我的需要调整了这个例子:我需要使用以下 proba 生成从 1 到 6 的数字:
signal5=[0.233 0.233 0.233 0.1 0.1 0.1 ];
到现在为止,一切都很完美。
当我尝试通过大量试验(1000)验证结果时,我有一两个奇怪的案例,其中 x=7 :
k=1
for k=1:1000
signal5=[0.233 0.233 0.233 0.1 0.1 0.1 ];
r = rand;
x = sum(r >= cumsum([0, eval('signal5')]));
fid=fopen('seed.txt','a+');
fprintf(fid,'Trial %s X %s',num2str(k),num2str(x));
fclose(fid);
k=k+1
end
为什么我有时会 7 进行大量试用?