我正在尝试使用Python-2.7来使用"随机化分布"但是找不到合适的itertool
来完成这项工作。
想象一下,我有列表['A', 'B', 'B']
使用itertools.permuations()
会给我以下内容:
('A', 'B', 'B')
('A', 'B', 'B')
('B', 'A', 'B')
('B', 'B', 'A')
('B', 'A', 'B')
('B', 'B', 'A')
当我真正想要的是没有重复的排列时:
('A', 'B', 'B')
('B', 'A', 'B')
('B', 'B', 'A')
当然我可以过滤,但在真实世界大小的数据集中,你会得到第一种方法的组合爆炸,而第二种方法则没有。
fact(len(A) + len(B))
与fact(len(A) + len(B)) / (fact(len(A) * fact(len(B)))
如果len(A) = 6
和len(B) = 5
,399,916,800
与462
有这个工具吗?
旁注:如果有人能够提出更具描述性的标题,以便这个问题更容易被其他人搜索,我愿意接受建议。请发表评论。