我可以在matlab中获得2组随机数组吗?

时间:2016-10-27 11:08:23

标签: matlab

idx=randperm(5)
idx=[1,3,4,2,5]

我知道这样的作品就是这样,但我很好奇是否有这样的东西。

idx=[1,3,4,2,5,5,3,2,4,1]

在一个数组

之后添加一组数组

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

一种矢量化方式是创建一个大小为(m,n)的随机数组,对每行进行排序并获得argsort索引。这些索引的每一行都代表一组randperm值。在这里,m将是所需的组数,n是每个组中元素的数量。

因此,实现看起来像这样 -

[~,idx] = sort(rand(2,5),2);
out = reshape(idx.',1,[])

示例运行 -

>> [~,idx] = sort(rand(2,5),2);
>> idx
idx =
     5     1     3     2     4
     4     3     2     5     1
>> out = reshape(idx.',1,[])
out =
     5     1     3     2     4     4     3     2     5     1

答案 1 :(得分:0)

您可以使用模运算:

n = 5 %maximum value
r = 2 %each element are repeated r times.

res = mod(randperm(r*n),n)+1