如何randperm k矢量的第一个元素,其大小为N.

时间:2014-10-14 07:56:56

标签: matlab permutation

我正在使用randperm随机置换向量中的元素。但是,我有一个问题,即我有一个大小为N的向量,我只想在该向量中的随机排列k个第一个元素,而N-k元素没有变化。怎么用matlab代码呢?

例如:

A = [1 1 1 1 0 0 0 0 0 0]
% N=10 array length; d=4 number of element equal to 1 in the first k elements, k=7

期望的输出:

A_randperm=[0 1 1 0 1 0 1 0 0 0]
% Random permutation elements of 1st to 7th, 8th to 10th elements stay the same

这是我的代码

d=4;
N=10;
k=7;
column = [ones(1,d) zeros(1,N-d)];% create random vector without permutation

% Random permutation
.... 

2 个答案:

答案 0 :(得分:2)

如评论中所述:

A(1:k) = A(randperm(k));

完成这项工作。

答案 1 :(得分:2)

@ JanDeGier的解决方案略有不同:

x = 1:10;
k = 7;

x = [x(randperm(k)) x(k+1:end)];