带权重HashMap物品抽取算法的各物品选中概率计算流程咨询
自研物品抽取算法的物品最终展示概率通用计算流程
前置变量定义
先统一计算过程中用到的核心变量:
N:hashmap存储的物品总数量w_i:第i个物品对应的权重值s_i = 1/w_i:第i个物品的实际抽样权重(和w_i成反比,符合权重越低抽取概率越低的规则)- 0.4:候选物品池的整体展示概率
步骤1:计算物品进入3个候选池的概率
你当前的基础概率思路是正确的,只需要叠加权重系数和去重影响即可,分两种计算场景:
近似计算(适用于N≥20的场景,误差可忽略)
当物品总数远大于需要抽取的3个物品时,去重规则对概率的影响极低,可以直接简化计算:
- 单轮抽取中,物品i被抽中且通过权重校验的概率:
p_hit_i = 1/(N * w_i) - 抽取3个不重复物品的场景下,物品i进入候选池的概率近似为:
p_candidate_i ≈ 3 * p_hit_i = 3/(N * w_i)
本质就是你之前算的无权重基础概率3/N,乘以权重系数1/w_i完成权重叠加。
精确计算(适用于N较小的场景)
如果物品总数较少,需要考虑去重规则的影响,该抽取逻辑等价于不放回加权抽样,按以下方式计算:
- 先计算所有物品的抽样权重总和
S = sum(s_i) = sum(1/w_i) - 物品i进入候选池的精确概率为:
p_candidate_i = s_i * [1/S + 平均(1/(S - s_x1)) + 平均(1/(S - s_x1 - s_x2))]
其中s_x1、s_x2是第一次、第二次被抽中的物品的抽样权重,对所有可能的x1、x2组合取平均即可得到精确值。
步骤2:叠加最终展示概率
因为选出来的3个候选物品只有40%的概率会被整体展示,所以物品i的最终被展示概率为:p_final_i = p_candidate_i * 0.4
计算示例
假设物品总数N=20,目标物品A的权重w_A=2,用近似方法计算:
- 基础无权重概率:3/20 = 15%
- 叠加权重系数1/2后,进入候选池概率:15% * 1/2 = 7.5%
- 叠加40%展示概率后,最终展示概率:7.5% * 0.4 = 3%
内容的提问来源于stack exchange,提问作者user14732842
相关产品推荐
相关产品推荐

