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

3 ビュー (過去 30 日間)
Doobie
Doobie 2017 年 4 月 27 日
コメント済み: Doobie 2017 年 4 月 28 日
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
  1 件のコメント
Doobie
Doobie 2017 年 4 月 28 日
Thank you, this is exactly what I was looking for.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeRandom Number Generation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by