Can I use randi and say random number from 1 to 30 except 8 and 9? (for example)

9 ビュー (過去 30 日間)
Akana Juliet
Akana Juliet 2021 年 6 月 18 日
コメント済み: Akana Juliet 2021 年 6 月 21 日
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?

採用された回答

Stephen
Stephen 2021 年 6 月 18 日
編集済み: Stephen 2021 年 6 月 18 日
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
vec = 1×28
1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
val = vec(randi(numel(vec)))
val = 22
  3 件のコメント
Akana Juliet
Akana Juliet 2021 年 6 月 21 日
This is perfect, thanks so much!

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by