Stopping a for loop when certain values have been reached
50 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Voss
il 16 Gen 2022
Modificato: Voss
il 16 Gen 2022
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 Commenti
Torsten
il 16 Gen 2022
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
il 17 Gen 2022
Modificato: Torsten
il 17 Gen 2022
@Ben Hatrick Answer moved here:
This is a massive help, thanks so much!
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!