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) место и назначить ему один, указанная часть - после инструкции Else.Matlab Single Row Vector, while loop, который заменяет значение
Ваш текущий цикл восстанавливает случайное число в теле цикла, возможно, поэтому вы задаете этот вопрос (но ваш вопрос неясен, поэтому я только догадываюсь). Создайте и сохраните значение 'randi (100)' перед циклом 'while', проверьте для' seat (this_random_index) == 0' и восстановите индекс внутри цикла. В этом случае вы должны установить заданное место в 1 * после * цикла while. Домашнее задание^2: выполните одно и то же в способе MATLAB-y, без цикла while (найдите ненулевые индексы «места», выберите один случайный из этих индексов). –