【发布时间】:2018-08-03 15:12:48
【问题描述】:
我有一个 while 循环,我想将参数“rate”乘以 2,只要“fitval”连续 3 次以上(迭代)分配相同的值。 Fitval 可以在每次迭代中随机取值 1、2、3、4 和 5。
例如,如果 fitval 被分配了两次相同的值,但第三次它变成了一个新值,我希望计数器“重置”,这样我们需要再次迭代 3 次,然后才能将“速率”翻倍。
我编写了一个似乎可以解决问题的代码,见下文。我想知道是否有更优雅的方式来实现这一点。任何提示将不胜感激!
i=2;
k=1;
rate=0.5;
fitval=[nan];
while i<15
fitval=[fitval;randi(5)];
if fitval(i)==fitval(i-1)
k=k+1;
else
k=1;
end
if k==3
rate=2*rate;
end
i=i+1;
end
fitval
rate
【问题讨论】:
-
你的问题是什么,错误?您的代码似乎正在运行...此站点不适用于代码优化
-
您可以在while循环之前生成随机数组,然后您只需搜索3个相似的值。这样会更简单。
-
代码可以精简一点,不过这对codereview来说更重要
标签: matlab loops while-loop conditional-statements