How to generate specific number of specific integers within a range?

1 Ansicht (letzte 30 Tage)
I want to generate a random array of 8 integers within [1,4] where each integer appears exactly twice. Examples:
1 1 2 2 3 3 4 4
4 2 1 2 3 1 3 4
2 4 1 2 3 4 3 1
I know randi(4,8,1) gives a random array of 8 integers within [1,4] but it does not specify how many come from which integer. Is there a built in matlab function that does this? If not, what should I do?

Akzeptierte Antwort

Stephen23
Stephen23 am 28 Apr. 2017
Bearbeitet: Stephen23 am 28 Apr. 2017
This is easy with randperm:
>> vec = repmat(1:4,1,2);
>> out = vec(randperm(numel(vec)))
out =
2 3 2 4 1 1 4 3
>> out = vec(randperm(numel(vec)))
out =
1 4 2 3 2 1 3 4
>> out = vec(randperm(numel(vec)))
out =
2 1 2 4 3 3 4 1

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by