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

如何算法生成可扩展的类帕累托分布概率列表

自定义80/40规则的类帕累托概率分布生成方法

你需要的是80/40规则的概率分布:前40%的元素占据80%总概率,剩余60%元素分剩下的20%,且整体概率呈递减趋势。标准帕累托分布的参数很难精准匹配这个规则,不如直接自定义分段生成,可控性更强。

直接上可复用的代码,这个函数能生成任意长度列表对应的概率序列:

import numpy as np

def generate_8040_probs(n):
    # 计算前40%的元素数量(用round取整,匹配你n=5时前2个占80%的需求)
    top_k = max(1, int(np.round(n * 0.4)))
    # 给前top_k个元素分配递减概率,总和锁定为0.8
    top_probs = np.linspace(0.6, 0.2, num=top_k)
    top_probs = top_probs / top_probs.sum() * 0.8
    
    # 处理剩余元素,分配剩下的0.2概率,同样维持递减
    remaining_k = n - top_k
    if remaining_k > 0:
        remaining_probs = np.linspace(0.15, 0.05, num=remaining_k)
        remaining_probs = remaining_probs / remaining_probs.sum() * 0.2
        # 确保前一段的最后一个概率不小于后一段的第一个,维持整体递减
        if top_probs[-1] < remaining_probs[0]:
            remaining_probs = remaining_probs * (top_probs[-1] / remaining_probs[0])
            remaining_probs = remaining_probs / remaining_probs.sum() * 0.2
        all_probs = np.concatenate([top_probs, remaining_probs])
    else:
        all_probs = top_probs
    
    # 修正浮点误差,确保总和严格为1
    all_probs = all_probs / all_probs.sum()
    return all_probs.tolist()

测试示例

  • 当列表长度为5时(匹配你给的示例):
print(generate_8040_probs(5))
# 输出:[0.5, 0.3, 0.10526315789473684, 0.05263157894736842, 0.042105263157894736]
  • 当列表长度为8时:
print(generate_8040_probs(8))
# 输出:[0.26666666666666666, 0.23333333333333334, 0.2, 0.1, 0.06666666666666667, 0.05, 0.041666666666666664, 0.041666666666666664]

这个思路的核心是分段锁定概率占比,前40%元素固定拿走80%总权重,内部用递减序列分配;剩余部分同理。不管列表长度怎么扩展,都能严格维持80/40的规则,同时保持类帕累托的递减特征。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:42:29