我通过matlab代码随机选择数组元素。我从数组中选择了8个元素(1,64)。现在,我想创建所有组合。示例数组= [1 2 3 4 ... 64]我选择了8个元素new = [1 2 3 4 5 6 7 8] new = [1 2 3 4 5 6 7 9] ... new是所有组合。我该如何创建所有组合?对于matlab代码
答案 0 :(得分:2)
假设订单不重要(即[1 2 3 4 5 6 7 8]
不计入不同的组合[1 2 3 4 5 6 8 7]
),请使用
combinations = nchoosek(1:64,8);
但它可能需要很长时间和RAM。
例如,
>> combinations = nchoosek(1:5,3)
给出
combinations =
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
要随机生成其中一种组合,而不必先计算它们:
combination = sort(randsample(1:64,8));