首页 > 解决方案 > 计算彩票号码的最佳方法?

问题描述

彩票中奖者需要从下面列出的指定数组中下注 6 个号码。

提取可能的组合 - 代码由两部分组成:

第 1 阶段 - 获得所有排列:

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]

combinations = tuple(itertools.permutations(a, 6))

第 2 阶段 - 扣除所有组合:

我从这里的另一篇帖子中获得了一些帮助,以删除任何此类重复项,因为在彩票中,该组合[1,3,5]类似于下注[5,1,3]

机器已启动,但在结束阶段 1 之前内存不足。

我知道你们中的大多数人会建议升级到 64 位等,但我正在寻找更有效的代码来处理我当前机器上的必要结果。主要用于学习目的。

非常感谢您的回复!

标签: python

解决方案


由于您正在寻找组合,只需使用itertools.combinations()...

>>> import itertools
>>> numbers = list(range(1, 38))
>>> combinations = set(itertools.combinations(numbers, 6))
>>> print(len(combinations))
    2324784

推荐阅读