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

如何用Python生成每个子数组内首元素不重复的随机3D数组

Python 生成符合规则的随机3D作业数组实现方案

原代码问题梳理

  • 重复检查逻辑反向:你写的while random_value not in jobs[x]是当值不存在时一直循环,反而会强制生成已存在的值,和需求完全相反
  • 重复检查对象错误:jobs[x]中存储的是二维元素,直接判断单个数字是否在jobs[x]里永远为False,根本起不到去重作用
  • 语法缩进错误:for z in range(2) 这行的缩进超出了上一层循环的范围,运行会直接报错

正确实现代码

import random

job_count = 5
jobs = []
# 元组第一个元素的可选范围,可按需调整
first_val_range = range(1, 11)
# 元组第二个元素的可选范围,可按需调整
second_val_range = range(1, 51)
# 每个job的长度范围
job_len_range = range(2, 6)

for _ in range(job_count):
    current_job = []
    used_first = set()
    # 随机生成本次job的长度
    job_len = random.choice(job_len_range)
    for _ in range(job_len):
        # 生成不重复的第一个元素
        first = random.choice(first_val_range)
        while first in used_first:
            first = random.choice(first_val_range)
        used_first.add(first)
        # 生成随机第二个元素
        second = random.choice(second_val_range)
        current_job.append((first, second))
    jobs.append(current_job)

实现说明

  1. 为每个job单独维护一个used_first集合,记录当前job已经用过的元组第一个元素,检查重复的时间复杂度为O(1)
  2. 每次生成第一个元素时判断是否已存在于集合中,存在就重新生成,保证唯一
  3. 元组第二个元素直接随机生成即可,无重复限制
  4. 所有范围参数都单独提取出来,方便后续按需调整

运行示例(随机生成,每次结果不同)

[
 [(2, 17), (7, 3), (9, 42), (5, 19)],
 [(3, 31), (10, 22), (6, 7)],
 [(1, 45), (7, 13), (9, 28), (4, 11), (3, 39)],
 [(8, 9), (2, 33), (5, 17)],
 [(10, 48), (4, 21), (6, 37), (1, 9)]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:06:04