numtrials = 10000;
empty = 0;
for i = 1:numtrials
seat = zeros(1,100);
seat(randi(100)) = 1;
for p = 2:99 % second person in line will look for seat 2, only up to 99 because I want to see if 99 is zero
if seat(p) == 0
seat(p) = 1;
else
while seat(randi(100)) == 0
seat(randi(100)) = 1;
end
end
end
if seat(100) == 0
empty = empty + 1;
end
end
disp(empty)
X = empty/numtrials;
disp(['The probability that your seat will be available is ', num2str(X)])
100人が立っていて、正面の人がランダムシートに座っていて、他の人が順番に座っています。ある人が座席を見つけた場合、別の座席に座ります。私は、座席100が最後の人がそれに到達するまでに開かれるという確率を見出そうとしています。私の質問は、どのように私のwhileループを開いて(0に等しい)座席を探し、それを1に割り当てることができるかです。問題の部分はElseステートメントの後にあります。Matlab単列ベクトル、値を置き換えるループ
あなたの現在のループは、ループ本体の乱数を再生成します。その理由はあなたがこの質問をしている理由です(しかし、あなたの質問は不明ですので、私は推測しています)。 'while'ループの前に' randi(100) 'の値を生成して格納し、' seat(this_random_index)== 0'をチェックしてループ内のインデックスを再生成します。このシナリオでは、指定されたシートをwhileループの後の*に設定する必要があります。 Homework^2:MATLAB-yの方法でwhileループを使わずに同じことをします( 'seat'の非ゼロのインデックスを見つけて、それらのインデックスから一つのランダムなものを選んでください)。 –