Question about using randperm in a loop
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Veena Chatti
am 9 Mär. 2020
Kommentiert: Veena Chatti
am 10 Mär. 2020
Hi,
I'm using randperm in a loop that's meant to generate unique random three-digit numbers to fill a 5x5 matrix, r, like this:
for i = 1:length(r)
r(1:5,i) = (randperm(900,5) + 99);
end
My question is:
Is there a possibility of repeating a number given the function is being called 5 times, once for each column? I want each number to be unique.
Thanks,
Veena
0 Kommentare
Akzeptierte Antwort
John D'Errico
am 10 Mär. 2020
Bearbeitet: John D'Errico
am 10 Mär. 2020
So, you want to sample 5 sets of 5 numbers, all from the same set, but you want them to be unique? (The technical description would be to sample without replacement.)
The point is, you already know how to sample 5 such numbers. So just sample 25 numbers!
r = reshape(randperm(900,25) + 99,[5 5]);
There is no reason to need a loop.
2 Kommentare
Weitere Antworten (1)
James Tursa
am 10 Mär. 2020
Bearbeitet: James Tursa
am 10 Mär. 2020
If you want each number in the matrix to be unique, then don't call randperm( ) by row because that will not guarantee uniqueness between calls. Call randperm( ) only once for the entire matrix (25 elements) and then reshape to a 5x5. E.g., something like
r = reshape(randperm(900,25) + 99,5,5);
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!