我有一个马丁,想要改变它的元素 .
x=[1 2 5 4 6 ]
洗牌之后(像这样)
x=[2 4 6 5 1]
matlab有功能吗? in php array_shuffle 这样做 .
randperm
idx = randperm(length(x));
xperm = x(idx);
作为 randperm 的替代,您还可以使用统计工具箱中的randsample .
y = randsample(n,k)返回从整数1到n随机均匀采样的值的k-by-1向量y,无需替换 .
请注意,它是"without replacement"(默认情况下) . 因此,如果将 k 设置为 length(x) ,则相当于对向量进行随机随机播放 . 例如:
k
length(x)
x = 1:5; randsample(x,length(x)) %ans = % 4 5 3 1 2
我比 randperm 更喜欢这个,因为它可以很容易地扩展到不同的用途 . 例如,要随机地从 x 中绘制3个元素(比如从具有有限项的桶中绘制),请执行 randsample(x,3) . 同样,如果您想绘制3个数字,其中字母表由 x 的元素组成,但允许重复,则执行 randsample(x,3,true) .
x
randsample(x,3)
randsample(x,3,true)
2 回答
randperm
获取混洗索引xperm = x(idx);
作为
randperm
的替代,您还可以使用统计工具箱中的randsample .请注意,它是"without replacement"(默认情况下) . 因此,如果将
k
设置为length(x)
,则相当于对向量进行随机随机播放 . 例如:我比
randperm
更喜欢这个,因为它可以很容易地扩展到不同的用途 . 例如,要随机地从x
中绘制3个元素(比如从具有有限项的桶中绘制),请执行randsample(x,3)
. 同样,如果您想绘制3个数字,其中字母表由x
的元素组成,但允许重复,则执行randsample(x,3,true)
.