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

Javascript如何实现按数组预设概率分配指定数量额度

按固定概率分配额度的最优实现方案

无需复杂判断和大量计算的最优实现是带权重的随机抽样统计,底层对应多项分布的单次抽样,实现逻辑非常简洁:

实现步骤

  • 第一步:整理档位和对应权重,无需做百分比换算,直接用原始数值即可:
    level_list = ["easy", "medium", "hard", "very hard"]
    weight_list = [85, 10, 3, 2]
    
  • 第二步:调用编程语言内置的带权重随机抽样接口,抽取和待分配额度总数相等的样本。以Python为例仅需一行代码:
    import random
    # k参数传入要分配的额度总数量,比如示例中的10
    sample_result = random.choices(level_list, weights=weight_list, k=10)
    
  • 第三步:统计每个档位在抽样结果中的出现次数,即为该档位最终分配到的额度数量。
    统计示例结果:
    easy: 8
    medium: 2
    hard: 0
    very hard: 0
    
    完全符合你给出的示例预期。

手动实现底层逻辑的极简方案

如果不想依赖编程语言的内置抽样接口,用累积区间映射法实现也没有复杂逻辑,不需要大量if判断:

  1. 先把权重转换为左闭右开的累积区间:上述权重对应区间为[0,85)、[85,95)、[95,98)、[98,100)
  2. 每分配1份额度时,生成1个0-100的随机整数,匹配落入的区间对应档位即可。因为档位数量极少,即使遍历匹配的成本也可以完全忽略。

对应数学模型

该需求的本质是符合参数为(总分配数N, 各档位概率p1,p2...pn)的多项分布,你需要的结果就是该分布的一次随机抽样结果,不需要手动推导复杂公式,直接用上述工程方案即可高效实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:39:03