Can I use randi and say random number from 1 to 30 except 8 and 9? (for example)
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Akana Juliet
le 18 Juin 2021
Commenté : Akana Juliet
le 21 Juin 2021
Hi everyone. I have some bad data that I have to exclude from my random index selecter but I can't remove it from my data.
For example, I wanted to say Random integer from 1 to 30, but exclude 8 and 9
This works but when I try to add another integer, like 8 and 9 for example, it doesn't work.
randRow = randi(30,1);
while randRow == 8
randRow = randi(30,1);
end
Do you guys know the right syntax? or is there an easier way to do it?
0 commentaires
Réponse acceptée
Stephen23
le 18 Juin 2021
Modifié(e) : Stephen23
le 18 Juin 2021
This is MATLAB, so your first thought should always be to use arrays and indexing:
vec = setdiff(1:30,8:9) % or [1:7,10:30] or whatever
val = vec(randi(numel(vec)))
3 commentaires
Stephen23
le 21 Juin 2021
vec = setdiff(1:30,[8,9,11,15,18])
How to generate and concatenate vectors is explained here
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!