idx=randperm(5)
idx=[1,3,4,2,5]
我知道这样的作品就是这样,但我很好奇是否有这样的东西。
idx=[1,3,4,2,5,5,3,2,4,1]
在一个数组
之后添加一组数组有没有办法做到这一点?
答案 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