Привет, я запрограммировал 1-го случайного ходока и пытаюсь реализовать зону захвата, где программа остановится, если ходок останется в определенном диапазоне значений в течение определенного периода времени. Код у меня выглядит так:
steps = 1000; %sets the number of steps to 1000
rw = cumsum(-1 + 2 * round(rand(steps,1)),1); %Set up our random walk with cumsum
%Now we will set up our capture zone between 13-18 for fun
if rw >= 13 & rw <= 18
dwc = dwc + 1 %Dwelling counted ticks up every time walker is in 13-18
else dwc = 0; %Once it leaves, it returns to 0
end
while dwc >= 5
fprintf('5 steps or more within range after %d steps, so so breaking out.\n', rw);
break
end
figure(7)
comet(rw); %This will plot our random walk
grid on; %Just to see the capture zone better
hold on;
line(xlim, [13, 13], 'Color', 'r');
line(xlim, [18, 18], 'Color', 'r');
hold off;
title('1d Random Walk with Capture Zone');
xlabel('Steps');
ylabel('Position');
Он пробежит по прогулке, но никогда не сломается в зоне захвата. Я уверен, что он несколько раз находился в зоне захвата более 5 шагов, но все равно продолжает работать. Любая помощь приветствуется.
break
вырывается из циклаwhile
, в котором он находится, но в этом цикле ничего не происходит. Протестируйтеdwc
с помощьюif
. - person Cris Luengo   schedule 01.12.2017