甲始终领先乙的概率

http://www.tianya.cn/techforum/Content/71/535787.shtml

天涯上给出了方法,但是我觉得说得并不完备,也就是不能证明其充要性,故而于此,在它的基础上给出我的方法


投票,甲得 M,乙得 N,票一张一张计,求计票过程中甲始终领先乙的概率(M>N)。


既无法一一枚举,故而简化之,以六票分甲四乙二为例。

甲票标为 A,乙票标为 B,枚举所有情况:AAAABB、AAABAB、AAABBA、AABAAB、AABABA、AABBAA、……不再枚举,因为从 AABBAA 开始,已经不能满足甲始终领先了。

做如下操作:从左往右遍历,做压栈处理,一旦栈顶处 A 与 B 相遇,则双双弹出栈,若遍历过程中栈终始不为空,则满足条件,否则,不满足条件。

如是操作之道理:相遇的 AB 互相抵消,对甲的领先没有任何影响。若遍历过程中栈内始终不为空,表示始终有未被抵销的票;由于甲乙交替领先权的一个必要条件就是计票过程中栈被清空,也即需要完全抵销对方的优势才可,故而又由于最终甲胜,栈内必然始终不得为空,留下的一定是甲票。

我们将上述枚举处理一下,抵消者以 X 代替,则有 AAXXXX、AAXXXX、AXXXXA、AXXAXX、AXXXXA、XXXXAA、……凡是第一个为 X 者,则表示栈被清空过,因此我们需要序列的第一项为 A。


换种思路:让序列的首尾相连成圈,然后在某一处切断它,形成一种序列。由于有 M + N 个结点,因此有 M + N 种断法。假设从圆外向圆内切,下刀的右侧为新序列起始点,左侧为末尾点。注意这里,会形成许多种圈,比如 AAXXXX、AXXAXX 就是两种圈,分别是两个 A 相连和不相连。但无论有多少种圈,只有从圆外向圆内切,切在 A 的左侧断链,才能保证新序列第一项为 A,由于圆内总共有 M - N 个 A,故每种圆都有 M - N 种切法。故而,概率为 (R*( M - N )) / (R*( M + N ))。R 为圆的种数,可将 R 上下消元,得最后结果为

( M - N ) / ( M + N )


有志于学,虽草庐中应可知天下事!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1) 该时期内这个地区遭受水灾的概率 根据题意可知,只要河流或河流有一条泛滥,该地区就会遭受水灾,因此可以用以下公式计算: P(河流或河流泛滥) = P(河流泛滥) + P(河流泛滥) - P(河流泛滥且河流泛滥) 其中,P(河流泛滥且河流泛滥) = P(河流泛滥) * P(河流泛滥|河流泛滥) 根据题意可知,P(河流泛滥|河流泛滥) = 0.3,因此可以得出: P(河流或河流泛滥) = 0.1 + 0.2 - 0.1 * 0.3 = 0.27 因此,该时期内这个地区遭受水灾的概率为0.27。 可以用以下代码实现: p_A = 0.1 p_B = 0.2 p_B_given_A = 0.3 p_A_or_B = p_A + p_B - p_A * p_B_given_A print("该时期内这个地区遭受水灾的概率为:", p_A_or_B) (2) 当河流泛滥时,河流泛滥的概率 根据题意可知,当河流泛滥时,河流泛滥的概率可以表示为P(河流泛滥|河流泛滥)。根据贝叶斯定理,可以得到: P(河流泛滥|河流泛滥) = P(河流泛滥|河流泛滥) * P(河流泛滥) / P(河流泛滥) 其中,P(河流泛滥|河流泛滥) = 0.3,P(河流泛滥) = 0.1,已知。因此只需要计算P(河流泛滥)即可。 根据全概率公式,可以得到: P(河流泛滥) = P(河流泛滥|河流未泛滥) * P(河流未泛滥) + P(河流泛滥|河流泛滥) * P(河流泛滥) 其中,P(河流泛滥|河流未泛滥) = 0.2,P(河流未泛滥) = 0.9,已知。因此可以计算出P(河流泛滥)为: P(河流泛滥) = 0.2 * 0.9 + 0.3 * 0.1 = 0.23 因此,当河流泛滥时,河流泛滥的概率为: P(河流泛滥|河流泛滥) = 0.3 * 0.1 / 0.23 = 0.13043478260869565 可以用以下代码实现: p_A = 0.1 p_B = 0.2 p_B_given_A = 0.3 p_B_not_A = 0.2 p_A_not_B = 0.1 p_not_A = 0.9 p_B = p_B_given_A * p_A + p_B_not_A * p_not_A p_A_given_B = p_B_given_A * p_A / p_B print("当河流泛滥时,河流泛滥的概率为:", p_A_given_B)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值