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

Python如何实现线性加权随机分布:低值高频、高值稀有

实现线性递减概率随机函数的方案

你需要的1~100数值概率线性递减的需求,可以通过权重匹配或者逆变换采样实现,核心逻辑是给每个数值分配和概率成正比的权重:数值k的权重为101 - k,即1权重为100、100权重为1,概率刚好随数值升高线性降低。

方案1:简洁易读实现(适合低频调用)

直接使用Python内置的random.choices方法指定权重即可:

import random

def getPercentContent():
    # 生成1~100每个数对应的权重,线性递减
    num_range = range(1, 101)
    weights = [101 - num for num in num_range]
    # 按权重随机选择一个数
    return str(random.choices(num_range, weights=weights, k=1)[0])

方案2:高性能实现(适合高频调用)

通过数学计算直接生成结果,避免每次遍历权重列表,性能提升明显:

import random
import math

# 预计算所有权重总和,固定值为 100*101/2 = 5050
TOTAL_WEIGHT = 5050

def getPercentContent():
    # 生成1到总权重之间的随机整数
    rand_val = random.randint(1, TOTAL_WEIGHT)
    # 解二次方程直接定位到对应的数值
    result = (201 - math.isqrt(201 * 201 - 8 * rand_val)) // 2
    return str(result)

效果验证

两种方案生成的随机数都满足:

  • 1的出现概率约为1.98%,是所有数值中最高的
  • 100的出现概率约为0.02%,是所有数值中最低的
  • 相邻数值的概率差固定为0.0198%,完全符合线性递减的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:57:03