【发布时间】:2018-02-01 16:15:39
【问题描述】:
我正在尝试使用 Matlab 的 randperm 并调用 randperm = 5 生成 1 到 5 之间的随机数。
每次这都会给我一个不同的数组,例如:
x = randperm(5)
x = [3 2 4 1 5]
我需要排列向量,使 4 和 5 始终彼此相邻,而 2 始终在 1 和 3 之间......例如[3 2 1 4 5] 或 [4 5 1 2 3]。
所以基本上我有两个长度不等的“块” - 1 2 3 和 4 5。块的顺序并不那么重要,只是 4 和 5 最终在一起,而 2 在 1 和 3 之间。
我基本上只能有4种可能的组合:
[1 2 3 4 5]
[3 2 1 4 5]
[4 5 1 2 3]
[4 5 3 2 1]
有人知道我该怎么做吗?
谢谢
【问题讨论】:
-
两个块都使用
randperm,如何为它们建立索引使用randperm(2)。 -
由于您的可能组合数量非常有限,请从这些组合中创建一个数组,然后使用
randi从中随机选择一行。 -
一定要
4 5吗?您所有可能的组合均未显示5 4。 -
@Adriaan:我数了 8 种可能性:上面的四种,再加上另外四种,4 和 5 交换了。