how do i create a loop that generates random numbers in between .5 and five seconds(.5+4.5*rand), that accumulates up to 60 seconds then resets back to zero seconds for 120 times
3 ビュー (過去 30 日間)
古いコメントを表示
I have been trying to do this for two days and have a cluster f of variables which in the end doesn't work. I also need a separate variable to count up all the time passed??
this is what i have it just keeps going up and doesn't reset at 60 seconds
clc
clear
n=7200;
rlight=35;
glight=60-rlight;
x=zeros(n,1);
greencars= zeros(n,1);
inqueue=zeros(n,1);
for i=1:n;
while x<=floor(7140)
x=(.5+4.5*rand)+x;
if x<glight
greencars(i,1)=greencars(i,1)+1;
elseif x>=glight & x<=60
inqueue(i,1)=inqueue(i,1)+1;
end
end
end
gcars=sum(greencars)
inqueue=sum(inqueue)
wait=inqueue;
line=wait-1;
sec_cross=3.2+line*1.4
go=glight-sec_cross
max(x)
9 件のコメント
回答 (1 件)
Jan
2012 年 11 月 30 日
Perhaps this helps:
T = 0.5 + rand(1,1e6) * 4.0; % Times
accumT = cumsum(t); % Accumulated times
phaseT = rem(accumT, 60); % Green phases
phases = find([true, diff(phaseT <= 0)); % Indices of green phases
The duration of the red phase does not matter, as far as I can see. It can be added at the phases to the timings without touching the rest of the calculations.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!