我正在尝试创建在该网站上找到的这种组合减少算法:https://lotterywheels.io/
示例:
v=12,k=8,t=7
=> 126个组合(彩票)如果抽到7/12,保证赢7/8。
v=12,k=10,t=8
=> 118 种组合 如果抽到 8/12,则保证获胜 8/10。
我正在尝试在 Python 中执行此操作,这就是我到目前为止所做的:
from itertools import combinations
v=12
k=10
t=8
def reducer_func(v, k, t):
nums =[x for x in range(1, v+1)]
cmb6 = [cmb for cmb in combinations(nums, 8)]
cmb7 = [cmb for cmb in combinations(nums, k)]
final = []
i=1
while i<len(cmb7)+1:
tmp = cmb7[0:i]
completed=False
s=[]
c=set()
for big in tmp:
# check to see if all small are matched:
for small in cmb6:
if set(small).issubset(big):
c.add(small)
if len(c)==len(cmb6):
break
else:
i+=1
return tmp
g = reducer_func(v, k, t)
print(len(g))
for i in g:
print(i)
但是结果不同,例如,对于 v=12、k=10、t=8,它给出 45 种组合,而不是上面预期的组合。
大约几个月前我正在思考/尝试创建这样的算法,但我不知道应该如何完成。
提前谢谢您!