【发布时间】:2021-10-27 18:43:03
【问题描述】:
举个例子:
我有一个名为 vec 的向量,其中包含十个 1 和十个 2。我正在尝试随机排列它,但有一个条件是两个相同的值不能超过两次。
到目前为止,我所做的是使用 randperm 函数生成 vec 的随机索引并相应地改组 vec。这就是我所拥有的:
vec = [1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2];
atmost = 2;
indexes = randperm(length(vec));
vec = vec(indexes);
>> vec =
2 1 1 1 2 1 2 1 2 1 1 1 2 2 1 2 1 2 2 2
我的代码随机排列 vec 的元素,但不满足两个相似值最多出现两次的条件。我怎样才能做到这一点?有什么想法吗?
【问题讨论】:
-
我强烈建议添加标签,让有知识回答的人注意到您的问题。至少algorithm 可能还有combinatorics。我会为您添加它们,但我不知道您要替换哪些现有标签。
标签: matlab vector random constraints shuffle