Can I use randi and say random number from 1 to 30 except 8 and 9? (for example)
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Akana Juliet
am 18 Jun. 2021
Kommentiert: Akana Juliet
am 21 Jun. 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 Kommentare
Akzeptierte Antwort
Stephen23
am 18 Jun. 2021
Bearbeitet: Stephen23
am 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 Kommentare
Stephen23
am 21 Jun. 2021
vec = setdiff(1:30,[8,9,11,15,18])
How to generate and concatenate vectors is explained here
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!