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

如何计算两个均匀分布中A随机值大于B随机值的概率?

均匀分布下A.random() > B.random()的精确概率计算

给定两个连续均匀分布:

  • 分布A:区间(ψ, Ψ)
  • 分布B:区间(φ, Φ)

需要精确计算A.random() > B.random()的概率,已梳理出四种区间重叠情况及代码框架,但不确定重叠区间内的概率计算方式,要求不使用模拟方法,仅通过数学推导得到精确解。

区间重叠情况示意图

#                               A>B?                             #
#  ------------------------------------------------------------  #
#    φ         Φ                 ψ+++++++++Ψ                    ==> ψ >= Φ : 必然成立(100%)
#    ψ---------Ψ                 φ         Φ                    ==> φ >= Ψ : 必然不成立(0%)
#                      ψ-------φ????Ψ           Φ               ==> Φ >= Ψ >= φ : 可能成立
#                      φ       ψ????Φ+++++++++++Ψ               ==> Ψ >= Φ >= ψ : 可能成立

原代码框架

if ψ >= Φ:                                # ALWAYS a max (ψ >= Φ)
    return 1
elif φ >= Ψ:                              # NEVER a max (φ >= Ψ)
    return 0
elif Φ >= Ψ and Ψ >= φ:                   # SOMETIMES a max (Φ >= Ψ >= φ)
    range_A = Ψ - ψ
    range_B = Φ - φ
    overlap = Ψ - φ                          # [???? region]
    overlap_chance = <<<X>>>
    return overlap_chance
elif Ψ >= Φ and Φ >= ψ:                   # SOMETIMES a max (Ψ >= Φ >= ψ)
    range_A = Ψ - ψ
    range_B = Φ - φ
    overlap = Φ - ψ                          # [???? region]
    overlap_chance = <<<X>>>
    all_good = Ψ - Φ                         # [++++ region]
    all_good_chance = all_good / range_chosen
    return overlap_chance + all_good_chance

重叠区间概率的数学推导

对于两个独立的均匀分布,我们可以通过面积法计算概率:把A的取值x和B的取值y看作平面直角坐标系中的点(x,y),所有可能的点构成一个矩形区域,面积为range_A * range_B。而满足x > y的区域面积占总矩形面积的比例就是所求概率。

情况1:Φ >= Ψ >= φ

此时总区域是x∈(ψ,Ψ),y∈(φ,Φ)。满足x>y的区域分为两部分:

  • 当y∈(φ, ψ)时,x∈(ψ,Ψ)必然大于y,这部分面积为(ψ - φ) * range_A
  • 当y∈(ψ, Ψ)时,x>y的区域是直角三角形,面积为0.5 * range_A²

总满足条件的概率为:

[(ψ - φ) * range_A + 0.5 * range_A²] / (range_A * range_B) = [(ψ - φ) + 0.5 * range_A] / range_B

情况2:Ψ >= Φ >= ψ

此时总区域是x∈(ψ,Ψ),y∈(φ,Φ)。满足x>y的区域分为两部分:

  1. all_good区域:x∈(Φ,Ψ)时,x必然大于y(y<Φ<x),这部分概率为(Ψ - Φ) / range_A
  2. 重叠区间(ψ,Φ):
    • 当y∈(φ,ψ)时,x∈(ψ,Φ)必然大于y,对应面积(ψ - φ)*(Φ - ψ)
    • 当y∈(ψ,Φ)时,x>y的直角三角形面积为0.5*(Φ - ψ)²
      这部分概率为:
    [(ψ - φ)*(Φ - ψ) + 0.5*(Φ - ψ)²] / (range_A * range_B) = [(ψ - φ) + 0.5*(Φ - ψ)] / range_A
    

修正后的完整代码

def prob_a_greater_than_b(psi, Psi, phi, Phi):
    range_A = Psi - psi
    range_B = Phi - phi
    
    if psi >= Phi:
        # A的最小值大于B的最大值,必然成立
        return 1.0
    elif phi >= Psi:
        # B的最小值大于A的最大值,必然不成立
        return 0.0
    elif Phi >= Psi and Psi >= phi:
        # 情况:Φ >= Ψ >= φ
        part1 = (psi - phi) / range_B
        part2 = 0.5 * range_A / range_B
        return part1 + part2
    elif Psi >= Phi and Phi >= psi:
        # 情况:Ψ >= Φ >= ψ
        all_good_chance = (Psi - Phi) / range_A
        part1 = (psi - phi) / range_A
        part2 = 0.5 * (Phi - psi) / range_A
        overlap_chance = part1 + part2
        return all_good_chance + overlap_chance

关于你的猜测说明

你之前猜测重叠区间内概率为(overlap / range_A) * (overlap / range_B) * 0.5,这个结论并不准确。因为重叠区间外存在必然满足A>B的区域,且重叠区间内的概率计算需要结合两个分布的区间范围,不能简单通过重叠比例相乘再乘0.5得到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:02:51