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

Python生成带权重重复值:按指定频率生成15000个优先级元素

Python实现:生成指定频率的优先级列表

嘿,这个需求用Python标准库就能轻松搞定,给你两种实用方案,根据你的精度要求选就行:

方案1:快速随机生成(允许微小误差)

如果只是需要近似符合频率要求,用random.choices()是最简洁的方式,Python 3.6+就支持这个方法,直接指定权重参数即可:

import random

priority = ['Emergency', 'High', 'Normal', 'Low']
# 对应10%、20%、30%、40%的频率权重(用小数或整数比例都可以,比如[1,2,3,4]效果一样)
weights = [0.1, 0.2, 0.3, 0.4]
# 生成15000个元素的列表
result_list = random.choices(priority, weights=weights, k=15000)

验证频率

你可以用collections.Counter来统计实际频率,看看是否符合预期:

from collections import Counter

total = len(result_list)
counts = Counter(result_list)
for item, count in counts.items():
    print(f"{item}: {count} 次,频率 {count/total*100:.2f}%")

因为是随机抽样,结果会有一点点误差,但整体会非常接近设定的频率,完全满足大多数场景需求。

方案2:精确控制数量(无误差)

如果要求每个元素的数量绝对精确(比如必须正好1500个Emergency、3000个High),可以先按数量生成每个元素的重复列表,再打乱顺序:

import random

priority = ['Emergency', 'High', 'Normal', 'Low']
total = 15000
# 计算每个元素的精确数量
item_counts = {
    'Emergency': int(total * 0.1),
    'High': int(total * 0.2),
    'Normal': int(total * 0.3),
    'Low': int(total * 0.4)
}
# 构建初始列表
result_list = []
for item, cnt in item_counts.items():
    result_list.extend([item] * cnt)
# 打乱列表,保证随机性
random.shuffle(result_list)

这个方法生成的列表,每个元素的数量完全符合比例,打乱后也能保证随机性,适合对精度要求极高的场景。

两种方案对比

  • 方案1:代码简洁,生成速度快,适合大多数不需要绝对精确的场景;
  • 方案2:绝对精确,生成后打乱也能保证随机分布,适合严格要求频率的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:08:33