Can I use randi and say random number from 1 to 30 except 8 and 9? (for example)
4 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Stephen23
on 18 Jun 2021
Edited: Stephen23
on 18 Jun 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 Comments
Stephen23
on 21 Jun 2021
vec = setdiff(1:30,[8,9,11,15,18])
How to generate and concatenate vectors is explained here
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!