我是这个社区的新成员,也是Python的新用户。你知道吗
我面临着一个小问题,无论是在概念和编码水平。具体如下:
我有11组8个相同的元素(在现实生活中,它们是2个棉垫,每个4块,总共8块,乘以11个捐赠者——这是一个体味收集研究),即:
A A A A A A A A A A A A B B B B B B B B B B B B B B B C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C ... M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M
我现在要通过组合4个不同的供体来形成一个超供体垫,例如ABCD,ABCE,CDEF等。。。由4个元素组成的新组不应包含来自同一供体的碎片(例如,不允许使用AABC或ABDD),当然,如果使用了一个碎片,那么它就不能用来形成另一个超供体垫。 我想编写一些代码,让团队自动形成,而不必撞到我的头手动做,冒着失去计数的风险。你知道吗
这是没有重复的组合吗? 我在想这样做:创建一个像上面那样的矩阵,创建20个(我需要的超供体垫的数量)4元素空组(列表?)然后是一个循环,在这个循环中,我告诉你随机选取矩阵的Cij元素,并将它移到空列表中,然后转到下一个要选取的元素,但要确保它是不同的类型,并且是前一个组中没有选取的片段(例如,如果一个组有元素C43,那么同一个元素不应该在另一个组中使用)。这样做,直到4元素组已满,然后移动到下一个4元素组
我请求一些帮助,因为我几乎没有时间做这件事,否则我会试图通过犯大量的错误来学习。 有什么建议吗?你知道吗
编辑:一个表的例子,其中有已经创建的4个元素组和用于所用不同元素的第八部分的数量(当然,其中一些是预先准备好的)
提前感谢各位愿意提供的真知灼见!你知道吗
这里有一个解决方案,它生成所有可能的捐赠者组合,然后对它们进行洗牌,并在每次迭代中选择一个新的捐赠者。如果选取的一个无效,因为选取的捐赠者的所有样本都已用尽,则丢弃该组合并选择一个新的。你知道吗
可以看出,我将解决方案实现为一个生成器,因为我发现这在以后处理条目时非常有用。你知道吗
注意:目前的解决方案并不关心每个捐赠者的样本数量是否相等。可以通过增加一项要求来做到这一点,即要求不同的捐助者不能有太大的差别。但这会增加复杂性,即丢弃的组合会被重新插入“组”中的稍后位置。你知道吗
相关问题 更多 >
编程相关推荐