Generating random number between 1 to 10

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

 採用された回答

dpb
dpb 2014 年 7 月 1 日
編集済み: dpb 2014 年 7 月 1 日

0 投票

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 件のコメント

Aftab Ahmed Khan
Aftab Ahmed Khan 2014 年 7 月 1 日
Thank you for the response.
but this give me an error of this, Attempted to access p(2); index out of bounds because numel(p)=1.
a=1;
b=10; % range desired
p = randperm(a:b);
for i = a:b
r = p(i);
end
Aftab Ahmed Khan
Aftab Ahmed Khan 2014 年 7 月 1 日
Ok thanks, i solved it.
dpb
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)
Jos (10584) 2014 年 7 月 2 日

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
Juan Gonzalez
Juan Gonzalez 2021 年 4 月 13 日

1 投票

This is the easiest way
ceil(rand*10)

1 件のコメント

dpb
dpb 2021 年 4 月 13 日
編集済み: dpb 2021 年 4 月 13 日
But won't follow the request of OP to have sampling without replacement so that none can be repeated in the 10 samples.

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

Elias Gule
Elias Gule 2014 年 7 月 2 日

0 投票

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

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2014 年 7 月 1 日

コメント済み:

2021 年 10 月 8 日

Community Treasure Hunt

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

Start Hunting!

Translated by