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

Python生成指定多区间住宅楼单元号随机数的高效实现咨询

单元号随机生成优化实现方案

你当前预生成所有合法单元号存入列表再抽取的方案可正常运行,但存在维护成本高的问题:后续如果调整区间规则,需要重新计算并修改全量列表。更简洁易维护的实现思路是按区间加权随机抽取,每个合法单元号的命中概率和原方案完全一致,实现代码如下:

import random

# 所有合法闭区间,调整规则仅需修改此处即可
VALID_UNIT_RANGES = [
    (101, 112),
    (114, 125),
    (128, 149),
    (201, 230),
    (232, 263),
    (265, 280),
    (300, 305)
]

def generate_random_unit():
    # 计算每个区间的单元数,作为加权抽取的权重
    range_weights = [end - start + 1 for start, end in VALID_UNIT_RANGES]
    # 按权重随机选中一个区间
    selected_range = random.choices(VALID_UNIT_RANGES, weights=range_weights, k=1)[0]
    # 在选中区间内生成随机整数
    return random.randint(selected_range[0], selected_range[1])

# 调用示例
print(generate_random_unit())

该方案的优势:

  • 无需预存全量单元号,内存占用更低,即使后续区间范围扩大也不会增加额外存储开销
  • 规则调整仅需修改区间配置项,逻辑代码无需变动,维护成本极低
  • 如果需要生成多个不重复的单元号,可配合集合去重实现,示例如下:
def generate_unique_units(count: int) -> list:
    unit_set = set()
    while len(unit_set) < count:
        unit_set.add(generate_random_unit())
    return list(unit_set)

# 生成5个不重复的随机单元号
print(generate_unique_units(5))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:02