mue*_*mue 1 random matlab shuffle octave
考虑到每个值都重复相同,我在随机改组矢量而不重复数字时遇到麻烦(例如,11是不可接受但是1 2是可接受的).
更具体地说,我想重复矩阵[1:4]十次(总共40个元素),这样1,2,3和4都会重复10次而不是连续的.
如果需要澄清,请告诉我,我希望这个问题很明确.
这是我到目前为止:
cond_order = repmat([1:4],10,1); %make matrix
cond_order = cond_order(:); %make sequence
Run Code Online (Sandbox Code Playgroud)
我知道randperm非常相关,但我不确定如何使用非重复数字的一个条件.
编辑:谢谢你的所有回复.
我意识到我还不清楚.这些是我想拒绝的例子[1 1 2 2 4 4 4...].因此[1 2 3 4],只要不重复单个值,是否按顺序发生并不重要.(所以无论[1 2 3 4 1 2 3 4...]和[4 3 1 2...]是可接受的)
最好是我正在寻找符合标准的洗牌矢量
使用拒绝抽样的想法,只需重复randperm直到找到没有重复值的序列排列.
cond_order = repmat(1:4,10,1); %//make matrix
N = numel(cond_order); %//number of elements
sequence_found = false;
while ~sequence_found
candidate = cond_order(randperm(N));
if all(diff(candidate) ~= 0) %// check if no repeated values
sequence_found = true;
end
end
result = candidate;
Run Code Online (Sandbox Code Playgroud)