Can I use randi and say random number from 1 to 30 except 8 and 9? (for example)
조회 수: 5 (최근 30일)
이전 댓글 표시
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
채택된 답변
Stephen23
2021년 6월 18일
편집: Stephen23
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
val = vec(randi(numel(vec)))
댓글 수: 3
Stephen23
2021년 6월 21일
vec = setdiff(1:30,[8,9,11,15,18])
How to generate and concatenate vectors is explained here
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!