我有一个马丁,想要改变它的元素。
x=[1 2 5 4 6 ]
在洗牌后(类似这样)
x=[2 4 6 5 1]
是matlab有功能吗? 在php array_shuffle 中执行此操作。
答案 0 :(得分:22)
使用randperm
idx = randperm(length(x));
使用索引获取随机向量
xperm = x(idx);
答案 1 :(得分:3)
作为randperm
的替代方案,您还可以使用统计工具箱中的randsample
。
y = randsample(n,k)
返回k
-1
向量y
值随机均匀采样,无需替换,从整数1
到{{ 1}}。
请注意,它是“无需替换”(默认情况下)。因此,如果将n
设置为k
,则相当于对向量进行随机随机播放。例如:
length(x)
我比x = 1:5;
randsample(x,length(x))
%ans =
% 4 5 3 1 2
更喜欢这个,因为它可以轻松扩展到不同的用途。例如,要随机从randperm
中绘制3个元素(例如从包含有限项的存储桶中绘制),请执行x
。同样,如果您希望绘制3个数字,其中字母表由randsample(x,3)
的元素组成,但允许重复,则执行x
。