Generating random number between 1 to 10
조회 수: 40 (최근 30일)
이전 댓글 표시
Hi everyone,
I want to generate a random number between 1 to 10 for 10 loop iteration, with this code section of mine but i want that each time it generate a different number. Forexample if 2 is generated for the 1st loop iteration, then for the rest of 9 iteration. It won't generate 2 again. Similarly for the rest of other numbers between 1 to 10.
for i=1:10
r = (b-a)*rand(1) + a
end
댓글 수: 0
채택된 답변
dpb
2014년 7월 1일
편집: dpb
2014년 7월 1일
That's "sampling w/o replacement". One relatively simple way--
N1=1; N2=10; % range desired
p=randperm(N1:N2);
for i=N1:N2
r=p(i);
...
ERRATA
As noted, in comment, forgot there isn't such a form for randperm. Seems like reasonable enhancement altho it's easy enough to scale externally, too.
Use
N=10; % range desired
p=randperm(N);
for i=1:N
instead.
댓글 수: 3
dpb
2014년 7월 1일
Ewww...mea culpa. I was thinking there was a vector version of inputs to randperm to move the range from the default 1:N to N1:N2 but there isn't. Was trying to generalize.
For your case, just use
N=10;
p=randperm(N);
for i=1:N
...
If you do need integers from other than 1:N, scale the resulting array as needed.
추가 답변 (3개)
Jos (10584)
2014년 7월 2일
In matlab you can directly loop over a vector (no need for indexing)
V = randperm(10) % example vector
for x = V
% x will iterate over the values of V
disp(x)
end
Elias Gule
2014년 7월 2일
N = 10; % size of the array
numArray = randperm(N); % array containing integers ranging from 1 : N
for k = numArray
%%perform some calculation/process
doSomething(k);
end
댓글 수: 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!