组合变体,每个位置的限制选择

时间:2014-05-30 14:58:38

标签: python combinations permutation sample

您好我有25个不同的选择,需要从中选择5个选项。

对于所有可能的组合,我认为它计算为

combinations(range(25), 5)

但我有限制要求选择保留在某些位置

第1位可用选秀权

[0, 1, 2, 3, 4]

第2位可用选秀权

[5, 6, 7, 8, 9]

我想知道有多少组合可用,确保考虑到0 - 4只能在位置1中使用,而5-9只能在位置2中使用,

我几乎没有统计经验,只是想知道这种类型的抽样是什么?

谢谢

2 个答案:

答案 0 :(得分:1)

也许我不理解你的问题,但是它不仅仅是5 5 ?那就是:<number-of-avalailable-picks-for-each-position> ^ <number-of-positions>

对于位置1,您有5种可能的选择,对于每种选择,您对位置2有5种选择,对于这25种选择中的每一种,您有5种选择位置3等。

现在,如果每个位置的可能选择具有不同的大小,则选择的数量是选择列表大小的乘积。翻译成Python:

choicesLists = [
  [0, 1, 2, 3, 4, 5, 6, 7],
  [24, 23, 22, 21, 20, 19, 18, 17, 16, 15],
  [8, 14],
  [9, 13],
  [10, 11, 12]
]
nbChoices = reduce(lambda x,y: x*len(y), choicesLists)

如果你想使用itertools获得整个选择列表,你可以按照Dan D的建议使用product

combinations = product(*choicesList)

答案 1 :(得分:1)

结果为5**5

因为,对于第一个位置,您可以选择 5 C 1 = 5 way。 所以你可以做到第二名。至于第一和第二位置,您可以选择 5 * 5方式。 因此对于5个位置,答案将是5 5 5**5