我有一个 martix 并想改组它的元素。
x=[1 2 5 4 6 ]
洗牌后(像这样)
x=[2 4 6 5 1]
matlab 有它的功能吗? 在 php array_shuffle 中执行此操作。
我有一个 martix 并想改组它的元素。
x=[1 2 5 4 6 ]
洗牌后(像这样)
x=[2 4 6 5 1]
matlab 有它的功能吗? 在 php array_shuffle 中执行此操作。
使用randperm
idx = randperm(length(x));
使用索引来获得洗牌向量
xperm = x(idx);
作为 的替代方法randperm
,您还可以randsample
从统计工具箱中使用。
y = randsample(n,k)
返回从整数到随机均匀采样的值的k
逐个1
向量y
,无需替换。1
n
请注意,它是“无替换”(默认情况下)。因此,如果设置k
为length(x)
,则相当于对向量进行随机洗牌。例如:
x = 1:5;
randsample(x,length(x))
%ans =
% 4 5 3 1 2
I like this more than randperm
, because it is easily extensible to different uses. For example, to draw 3 elements from x
at random (like drawing from a bucket with finite items), you do randsample(x,3)
. Likewise, if you wish to draw 3 numbers, where the alphabet is made up of the elements of x
, but allow for repetitions, you do randsample(x,3,true)
.