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

 Risposta accettata

dpb
dpb il 1 Lug 2014
Modificato: dpb il 1 Lug 2014
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 Commenti

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
Ok thanks, i solved it.
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.

Accedi per commentare.

Più risposte (3)

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 il 13 Apr 2021
This is the easiest way
ceil(rand*10)

1 Commento

dpb
dpb il 13 Apr 2021
Modificato: dpb il 13 Apr 2021
But won't follow the request of OP to have sampling without replacement so that none can be repeated in the 10 samples.

Accedi per commentare.

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

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by