MATLAB Answers

0

Generating sets of non repeating random numbers

Asked by Toluwani Adekunle on 8 Jul 2018
Latest activity Commented on by Anton Semechko on 9 Jul 2018
Accepted Answer by dpb
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

  0 Comments

Sign in to comment.

Products


Release

R2017b

2 Answers

Answer by dpb
on 8 Jul 2018
Edited by dpb
on 8 Jul 2018
 Accepted Answer

>> 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
>>

  0 Comments

Sign in to comment.


Answer by Anton Semechko on 8 Jul 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 Comments

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
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);

Sign in to comment.