python - 计算彩票号码的最佳方法?
问题描述
彩票中奖者需要从下面列出的指定数组中下注 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 位等,但我正在寻找更有效的代码来处理我当前机器上的必要结果。主要用于学习目的。
非常感谢您的回复!
解决方案
由于您正在寻找组合,只需使用itertools.combinations()
...
>>> import itertools
>>> numbers = list(range(1, 38))
>>> combinations = set(itertools.combinations(numbers, 6))
>>> print(len(combinations))
2324784
推荐阅读
- ruby-on-rails - 无法在 Rails 中生成模型:库版本不兼容
- python-3.x - 无法在 Python 3 中接收 UDP 消息
- django - 如何使用 pylint_django?
- c - 位于 do 子句中的 '0' 究竟如何与 itoa 函数一起使用?
- javascript - jquery获取未定义的选定选项值
- reactjs - 如何在 JSX 中将返回的字符串重新呈现为 JSX
- c# - 大家好,当我计算任何数字 * 1% 时,它给了我一个很长的数字,我想将其缩减为 2 位小数 C# WPF 转换
- android - 无法从 Binlist API 获取值
- react-native - 功能组件中的 Animated.spring 不适用于 onPress?
- three.js - Perlin 噪声函数在顶点着色器中损坏但在片段着色器中没有?