how to create a random integernumbers with conditions?

9 views (last 30 days)
I just want to create an array at random which size will be 1 by sum([4 3 3]). The array contains 1 at 4 times, 2 at 3 times and 3 at 3 times. The result will be
A=[1 2 1 3 2 3 1 1 2 3], ie, random.
How can I generate it in the smart way?

Accepted Answer

madhan ravi
madhan ravi on 16 Jul 2020
ix = [4, 3, 3];
A = repelem(1:3, ix);
A(randperm(numel(A)))

More Answers (1)

David Hill
David Hill on 16 Jul 2020
A=[4 3 3];
a=[];
for k=1:length(A)
a=[a,repmat(k,1,A(k))];
end
for k=1:5
a=a(randperm(length(a)));%you don't necessary have to do this loop, you could do it just once
end
  1 Comment
SM
SM on 16 Jul 2020
Thank you. It is also suitable for my problem but i try to avoid using loop.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!