MATLAB: How to create a set of random numbers

random number generator

Hi, how I could generate random number 90 times
  1. probability space are 1, 2, 3
  2. totally 90 random numbers
  3. got 21 of 1, 38 of 2 and 31 of 3
Could you give me some solutions?
Thanks Joy

Best Answer

You could use randperm to randomly arrange a vector of exactly those numbers:
>> vec = [repmat(1,21,1);repmat(2,38,1);repmat(3,31,1)]; % or use REPELEM
>> vec = vec(randperm(numel(vec)));
And checking that it fulfills your requirements:
>> numel(vec)
ans = 90
>> nnz(vec==1)
ans = 21
>> nnz(vec==2)
ans = 38
>> nnz(vec==3)
ans = 31