how to create a random integernumbers with conditions?

2 vues (au cours des 30 derniers jours)
SM
SM le 16 Juil 2020
Commenté : SM le 16 Juil 2020
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?

Réponse acceptée

madhan ravi
madhan ravi le 16 Juil 2020
ix = [4, 3, 3];
A = repelem(1:3, ix);
A(randperm(numel(A)))
  1 commentaire
SM
SM le 16 Juil 2020
Thank You, Ravi. It is perfectly alright for my problem.

Connectez-vous pour commenter.

Plus de réponses (1)

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by