我有这组号码a=[1 2 3]
。我想将这个数字随机地放入矩阵7 x 1中,数字1必须有2次,数字2必须有3次,数字3必须有2次。
序列不是必需的。答案看起来像。
b=[1 2 2 2 1 3 3]'
答案 0 :(得分:3)
尝试randperm
:
a=[1 2 3];
samps = [1 1 2 2 2 3 3]; % specify your desired repeats
samps = samps(randperm(numel(samps))); % shuffle them
b = a(samps)
或者,您可以指定samps
的每个元素的重复次数,并使用a
来计算arrayfun
,而不是明确指定samps
:
reps = [2 3 2];
sampC = arrayfun(@(x,y)x*ones(1,y),a,reps,'uni',0);
samps = [sampC{:}];
samps = samps(randperm(numel(samps))); % shuffle them
b = a(samps)
答案 1 :(得分:0)
%how often each value should occure
quantity=[2,2,3]
%values
a=[1,2,3]
l=[]
%get list of all values
for idx=1:numel(a)
l=[l,ones(1,quantity(idx))*v(idx)]
end
%shuffle l
l=l(randperm(numel(l)))