how to create a random integernumbers with conditions?

2 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

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

Più risposte (1)

David Hill
David Hill il 16 Lug 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 Commento
SM
SM il 16 Lug 2020
Thank you. It is also suitable for my problem but i try to avoid using loop.

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by