与えられた確率で乱数を生成することについての他の投稿で見たように、私は自分のプログラムで使用したこの便利なコードを見つけました:
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 という奇妙なケースが 1 つまたは 2 つあります。
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 を持っているのですか?