一个均匀分布的值大于另一个均匀分布的值的概率是多少?

问题描述 投票:0回答:1

让我们的分布都是均匀的,第一个 (

A
) 的边界为
(ψ,Ψ)
,第二个 (
B
) 的边界为
(φ,Φ)
A.random() > B.random()
的概率是多少?

#                               A>B?                             #
#  ------------------------------------------------------------  #
#    φ         Φ                 ψ+++++++++Ψ                    ==> ψ >= Φ : ALWAYS a max (100%)
#    ψ---------Ψ                 φ         Φ                    ==> φ >= Ψ : NEVER a max (0%)
#                      ψ-------φ????Ψ           Φ               ==> Φ >= Ψ >= φ : SOMETIMES a max
#                      φ       ψ????Φ+++++++++++Ψ               ==> Ψ >= Φ >= ψ : SOMETIMES a max

到目前为止我已经想出了这个,但我不知道如何完成它:

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

我该如何计算

overlap_chance

我最好的猜测是,当两者都在该区域内时,这只是 50/50 (

(overlap / range_A) * (overlap / range_B) * 0.5
),但除了“我的直觉是这么说的”之外,我似乎无法提出令人信服的证据。


注 1:我将针对我的用例重复运行此代码,并且如果可能的话,宁愿不运行模拟。准确性对于证明稳健性也很重要(假设浮点运算正确)。

注2:我看到问题“如何使用正态分布来计算一个玩家在游戏中比另一个玩家获得更多分数的概率?”似乎很相似,但我没有使用R的经验,也没有理解如何将其应用于均匀分布。因此我自己在上面进行了尝试。

python random probability
1个回答
0
投票

[1] 得到

overlap chance

你的情况3和情况4可以进一步细分。

  • 情况3 φ <= Ψ <= Φ can be either,
    • ψ<= φ <= Ψ <= Φ        ①
    • φ<= ψ <= Ψ <= Φ        ②
  • 案例 4 ψ <= Φ <= Ψ can be either,
    • φ<= ψ <= Φ <= Ψ        ③
    • ψ<= φ <= Φ <= Ψ        ④

那么,每种情况的重叠将是

  • ① Ψ - φ
  • ② Ψ - ψ
  • ③ Φ - ψ
  • ④ Φ - Φ

[2]并回答标题问题,
我假设如下,

  • ψ< Ψ
  • φ< Φ

那么,

  1. 假设我们有 3 个由 4 个绑定变量组成的范围。
  2. 对于每种情况,获取每个范围发生的 A、B 概率。
  3. 计算具有上述范围的 3 x 3 概率矩阵,然后乘以 A 大于 B 的机会。
  4. 总结所有 3 x 3 矩阵
def chance_of_A_bigger_than_B(a1, a2, b1, b2):

    a_range = a2 - a1
    b_range = b2 - b1

    # a, b probabilities per each bound range 
    # There could be a nicer way to write the code but since there's only 6 cases, I didn't bother
    if a1 <= a2 <= b1 <= b2:
        a_range_probs = [1, 0, 0]
        b_range_probs = [0, 0, 1]
    elif a1 <= b1 <= a2 <= b2:
        a_range_probs = [(b1 - a1) / a_range, (a2 - b1) / a_range, 0]
        b_range_probs = [0, (a2 - b1) / (b2 - b1), (b2 - a1) / (b2 - b1)]
    elif a1 <= b1 <= b2 <= a2:
        a_range_probs = [(b1 - a1) / a_range, (b2 - b1) / a_range, (a2 - b2) / a_range]
        b_range_probs = [0, (b2 - b1) / b_range, 0]
    elif b1 <= b2 <= a1 <= a2:
        a_range_probs = [0, 0, (a2 - a1) / a_range]
        b_range_probs = [(b2 - b1) / b_range, 0, 0]
    elif b1 <= a1 <= b2 <= a2:
        a_range_probs = [0, (b2 - a1) / a_range, (a2 - b2) / a_range]
        b_range_probs = [(a1 - b1) / b_range, (b2 - a1) / b_range, 0]
    elif b1 <= a1 <= a2 <= b2:
        a_range_probs = [0, (a2 - a1) / a_range, 0]
        b_range_probs = [(a1 - b1) / b_range, (a2 - a1) / b_range, (b2 - a2) / b_range]

    # calculate chance for each a, b matrix cell
    final_prob = 0
    for a_idx, a_prob in enumerate(a_range_probs):
        for b_idx, b_prob in enumerate(b_range_probs):
            chance_to_occur = a_prob * b_prob
            chance_of_a_over_b = 0 if a_idx < b_idx else 0.5 if a_idx == b_idx else 1
            # chance of a over b
            # if a_idx < b_idx, a is always under b
            # if a_idx > b_idx, a is always over b
            # if a_idx == b_idx, in uniform distribution, 50% change for a to be bigger than b, thus 0.5
            final_prob += chance_to_occur * chance_of_a_over_b
    return final_prob
© www.soinside.com 2019 - 2024. All rights reserved.