Generating sets of non repeating random numbers

37 visualizzazioni (ultimi 30 giorni)
Hi,
How do I create 10 sets of random numbers within a range such that after every set, the numbers previously generated can’t be repeated or generated again i.e if I generate [1,3,8,6] from the range [1:40] those numbers would be deleted from the range and can’t be generated again

Risposta accettata

dpb
dpb il 8 Lug 2018
Modificato: dpb il 8 Lug 2018
>> ix=reshape(randperm(40),10,[])
ix =
35 23 21 40
26 17 8 36
38 5 27 18
20 10 11 9
30 33 24 28
16 25 34 15
3 12 32 7
19 37 14 13
31 4 1 2
29 39 6 22
>>

Più risposte (1)

Anton Semechko
Anton Semechko il 8 Lug 2018
Here is an example:
S=reshape(randperm(40),[],4);
All elements in S will be in the range [1 40] and unique. From this it follows that all 10 rows of S will also be unique.
  2 Commenti
Toluwani Adekunle
Toluwani Adekunle il 9 Lug 2018
Thanks, I have another question, what if the range of numbers I’m selecting from isn’t the same as the amount of sets I want to generate, i.e the range is 300 let’s say and I want a 27 by 9 matrix or the range is unknown
Anton Semechko
Anton Semechko il 9 Lug 2018
Same idea applies, but cutoff the extraneous samples before reshaping. Example for 300 range and 27-by-9 matrix.
S=radndperm(300);
S=S(1:(27*9));
S=reshape(S,27,9);

Accedi per commentare.

Categorie

Scopri di più su Random Number Generation in Help Center e File Exchange

Prodotti


Release

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by