zoukankan      html  css  js  c++  java
  • 三个小伙子同时爱上了一个姑娘而决斗问题的答案

          有一道很有意思的题目:三个小伙子同时爱上了一 个姑娘,为了决定他们谁能娶这个姑娘,他们决定用枪进行一次决斗。小李的命中率是30%,小黄比他好些,命中率是50%,最出色的枪手是小林,他从不失 误,命中率是100%。由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:小李先开枪,小黄第二,小林最后。然后这样循环,直到他们只剩下一个 人。那么这三个人中谁活下来的机会最大呢?他们都应该采取什么样的策略?


          网上有很多人在讨论但没有一个是经过严格推敲的,我在这里把看法写出来,欢迎大家讨论。


          先说策略,肯定是小李和小黄合力把小林打死符合他们两个人的最大化利益,这里不解释,如果有不同意的把你的答案贴出来看与我的答案相比他们2个人的生存率更大。小林肯定是首先对小黄动手因为对他威胁最大。


          先计算小林的,比较简单(谁让他成众矢之的):小李第一次没打死他,小黄也没成功,小李第二次还是没打死他,概率为 0.7*0.5*0.7=0.245。


          小李和小黄的计算很麻烦,他们两都没把握一次打死对方,导致会多次PK,这里先设置一个简单的情况计算好2者的概率,后面直接引用结果即可。


          分解出小题目:小李和小黄PK,小李的命中率是30%,小黄比他好些,命中率是50%,问小李先开枪的情况下生存率如何,小黄先开枪的情况下又如何。解答如下,A)小李先开枪,小李的生存率为0.3+0.7*0.5*0.3+0.7*0.5*0.7*0.5*0.3+0.7*0.5*0.7*0.5*0.7*0.5*0.3+......。解释一下,每一个+号都代表一种情况,第一组是小李一枪就打死了小黄概率为0.3;;第二组是小李没打中(0.7)乘以小黄也没打中(0.5)乘以小李第二轮打死小黄(0.3),所以是0.7*0.5*0.3;;后面一组就是更多一轮的情况,小李生存下来的情况有N多种,越到后面概率越小。根据计算公式,当n<1时有:n+n^2+n^3+n^4+...... = n/(1+n)。可以得出小李的生存率是0.461,小黄是0.539。       B)小黄先开枪与上类似,可算得小黄的生存率为0.5+0.5*0.7*0.5+0.5*0.7*0.5*0.7*0.5+0.5*0.7*0.5*0.7*0.5*0.7*0.5+...... = 0.769,小李是0.231。


          好,上面把小问题说清楚了咱们继续讲,对于小黄有这么几种情形,A)小李打死小林,剩下小李小黄PK,小黄先开枪,概率为0.3。    B)小李没打死小林,小黄把小林打死了,小李小黄PK,小李先开枪,概率为0.7*0.5。   套用上面的概率A) 0.3*0.769  ;B)  0.7*0.5*0.539 。 二者合并是0.419


          所以最终答案应该是小黄0.419,小林0.245,剩下小李是0.336


          为验证答案在计算下小李的,看是否与上面的一致。小李有这么几种情形,A)小李打死小林,剩下小李小黄PK,小黄先开枪,概率为0.3。    B)小李没打死小林,小黄把小林打死了,小李小黄PK,小李先开枪,概率为0.7*0.5。   C)小李没打死小林,小黄也没打死小林,小林一枪把小黄毙了,剩下小李只有30%的概率能打死小林,否则就over了。小李生存率为0.7*0.5*0.3 = 0.105    套用上面的概率A) 0.3*0.231  ;B)  0.7*0.5*0.461  C) 0.105。 三者合并是0.336和上面结果一致。


    =============================上面的答案是错的,看了devil_lei的评论后有新的概率====================

           因为小李可以选择放空枪,这样算法变了:


           小林的生存率提高了,变成0.5*0.7=0.35

           小黄的压力变大了:0.5*0.539=0.27   (50%的概率把小林打死,然后跟小李PK胜率0.539)

           小李的概率也变大了:0.5*0.3 + 0.5*0.461=0.381    (前面一组是跟小林PK,后面一组是跟小黄PK,都是小李先出枪)


           呵呵,枪法最差的生存率最高,就是比较阴险,第一枪居然放空枪。


          


          

           

  • 相关阅读:
    wcf 基本配置
    Config 代码片段
    常用的中文字体
    C++创建一个新的进程
    C++ 线程学习
    [C++]多线程: 教你写第一个线程
    C++ 多线程编程实例【2个线程模拟卖火车票的小程序】
    C++使用thread类多线程编程
    C++多线程编程(★入门经典实例★)
    C++ 多线程
  • 原文地址:https://www.cnblogs.com/liuliqiang/p/2288933.html
Copyright © 2011-2022 走看看