You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何避免生成全部itertools.combinations组合,高效生成随机组合?

高效生成指定数量的随机组合方案

你的原始代码问题在于直接生成所有可能的组合——从64个数中选16个的组合数约为4.88e14,这个量级的计算和存储完全不现实,根本无法在合理时间内完成。

更高效的实现思路

直接每次生成一组符合要求的随机不重复数字,利用集合去重(确保300组都是唯一的),直到凑够数量即可。由于300相对于总组合数来说极小,重复概率可以忽略,但用集合兜底能保证结果的唯一性。

优化后的代码

import random

def generate_random_sets():
    unique_combinations = set()
    # 循环直到收集到300个唯一组合
    while len(unique_combinations) < 300:
        # 从1-64中随机选16个不重复的数,排序后转元组(集合仅支持可哈希类型)
        combo = tuple(sorted(random.sample(range(1, 65), 16)))
        unique_combinations.add(combo)
    # 逐个输出结果
    for combo in unique_combinations:
        print(combo)

# 调用函数
generate_random_sets()

为什么这个方法高效

  • random.sample(range(1,65),16) 会直接从64个数字中抽取16个不重复的元素,时间复杂度极低
  • 用集合存储组合自动去重,避免生成重复的组
  • 整个过程只需要生成300组数据,内存占用可以忽略,运行时间几乎瞬间完成

内容的提问来源于stack exchange,提问作者Felix A. Covarrubias Perez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:20:43