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

1 次查看(过去 30 天)
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?

采纳的回答

Stephen23
Stephen23 2017-4-28
编辑:Stephen23 2017-4-28
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Random Number Generation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by