具有行总条件和灵活顺序的排列数字组合

时间:2019-04-12 09:30:36

标签: python python-3.x

我需要一个矩阵,其中所有可能的数字组合都给出k个数字,行总和为1。一个简单的例子:

数字= [0、0.5、1]

这些数字需要排列成矩阵,其中所有可能的数字组合加起来为1。重要的是要存在所有k个数字。在这种简单情况下,最终结果应该是这样的。存在所有数字,每行总计1:

d = {'1': [1, 0, 0, 0.5, 0.5, 0], '2': [0, 0, 1, 0.5, 0, 0.5], '3':[0, 1, 0, 0, 0.5, 0.5]}

到目前为止,我已经尝试通过以下代码使用itertools.permutations:

numbers = list(itertools.permutations([0,0.5,1], 3))

但是,我很难在给定的条件下获得期望的结果。我推测我应该将itertools与行值总和的一些条件语句结合使用。

有人愿意帮助吗?将不胜感激!

1 个答案:

答案 0 :(得分:0)

快速入门

这只是遇到此问题时的简短总结和建议。

  1. 尝试编辑您的问题,直到每个人都明白:每个人都越容易理解,在您的脑海中也越容易理解。

  2. 您的问题与组合相关,但并不完全像您想的那样:

如果您将问题倒过来:

对于每个列

  • 首先,确定要使用1还是2 0.5
  • 然后选择(组合方式)这些元素的索引

显示矩阵

  • 创建一个[0] * n * n矩阵
  • 对于每一列,请填写您在上面所做的决定。

如果操作正确,则应该具有大小为笛卡尔积的笛卡尔积

  • 列的可能性数 *
  • 列数