Stopping a for loop when certain values have been reached
20 ビュー (過去 30 日間)
古いコメントを表示
I am running a for loop at want it to finish when a given number of values have all occured at least once. The ouputs of the for loop range from 1-9 (intagers) and I am saving the values into an array. I want to find how many iterations it takes for every number in this range to have occured at least once but am unsure how to code this. Any ideas would be greatly apprectiated.
0 件のコメント
採用された回答
Voss
2022 年 1 月 16 日
編集済み: Voss
2022 年 1 月 16 日
values = [];
n_tries = 1000;
for i = 1:n_tries
values(i) = randi(9);
if all(ismember(1:9,values))
break
end
end
display(i)
display(values)
It's probably better to use a while loop, so you don't have to set a maximum number of iterations (n_tries):
values = [];
i = 0;
while ~all(ismember(1:9,values))
i = i+1;
values(i) = randi(9);
end
display(i)
display(values)
4 件のコメント
Torsten
2022 年 1 月 16 日
Theoretical result is
9*(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9) = 25.46
Not so far apart.
Torsten
2022 年 1 月 17 日
編集済み: Torsten
2022 年 1 月 17 日
@Ben Hatrick Answer moved here:
This is a massive help, thanks so much!
その他の回答 (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!