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

Python:基于指定规律数据集生成非规律随机唯一数列表

需求与现有问题
  • 现有sample-list-1.csv存储了24个数据集列表,每个列表包含5个1-36范围内的不重复整数
  • 这些列表存在两种序列规律:相邻数递增1(如list1)或递增6(如list16)
  • 目标:生成1-36范围内的5个不重复随机数列表,需避免完全符合上述任一规律,最多仅允许2个元素匹配原列表的规律特征
  • 当前代码仅能单次遍历单个列表,效率低下,需要优化为一次性遍历所有数据集列表来生成符合要求的随机列表
优化方案思路
  1. 批量读取所有数据集:一次性读取CSV中所有24个列表,转换为整数列表集合,为后续快速比对做准备
  2. 构建规律校验函数:分别实现两种序列规律的校验逻辑,直接判断生成的随机列表是否违反禁止规则
  3. 高效比对逻辑:利用集合交集操作快速计算新列表与已有列表的元素匹配数量,替代嵌套循环的低效遍历
  4. 循环生成合规列表:生成随机列表后,先校验自身是否符合禁止规律,再比对所有已有列表,直到生成完全符合要求的结果
完整实现代码
import random
import csv

def check_increment_1(num_list):
    """校验列表是否符合相邻数递增1的规律"""
    sorted_nums = sorted(num_list)
    for i in range(1, len(sorted_nums)):
        if sorted_nums[i] - sorted_nums[i-1] != 1:
            return False
    return True

def check_increment_6(num_list):
    """校验列表是否符合相邻数递增6的规律"""
    sorted_nums = sorted(num_list)
    for i in range(1, len(sorted_nums)):
        if sorted_nums[i] - sorted_nums[i-1] != 6:
            return False
    return True

def is_valid(new_list, existing_lists):
    """判断新列表是否合规:不违反禁止规律,且与任一已有列表的匹配元素≤2"""
    # 先检查自身是否符合禁止的序列规律
    if check_increment_1(new_list) or check_increment_6(new_list):
        return False
    # 遍历所有已有列表,检查元素匹配数量
    new_set = set(new_list)
    for lst in existing_lists:
        common_count = len(new_set & set(lst))
        if common_count > 2:
            return False
    return True

# 批量读取所有数据集列表
existing_lists = []
with open('sample-list-1.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        if row:  # 跳过空行(若存在)
            existing_lists.append([int(x) for x in row])

# 生成符合要求的随机列表
while True:
    new_pick = random.sample(range(1, 37), 5)
    if is_valid(new_pick, existing_lists):
        print("合规随机列表:", new_pick)
        break
代码说明
  • 规律校验:通过排序后检查相邻元素差值,精准判断是否符合目标禁止规律
  • 批量读取:一次性加载所有数据集,避免逐行单次处理的重复IO操作
  • 高效比对:集合交集操作的时间复杂度远低于嵌套循环,大幅提升比对效率
  • 循环生成:持续生成随机列表直到找到合规结果,确保最终输出完全满足要求

内容的提问来源于stack exchange,提问作者user136819

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:20:11