美女和男人博弈过程的模拟(庄家和散户的博弈)


在网上看到了一个有意思的话题”中国股市适合散户吗?”,有人举了一个美女和男士博弈的例子,这个例子表面看上去,胜负的概率各占50%,但是经过一些数学推算,发现经过多次博弈后,美女总是能够稳赢!

这个结论对我的冲击比较大,让我对自己的直觉产生了怀疑.理论归理论,我们能不能使用事实来模拟证明一下呢?找人来模拟这个博弈貌似不现实,作为程序员,很快就想到了使用程序来模拟.

我们分三步走,第一步:分析例子. 第二步:书写代码. 第三步:测试模拟.

第一步,分析例子:美女和男士玩硬币的故事.

规则是这样的,美女和男士各自有一个硬币,两人可以选择出硬币的正面或反面.如果两人的硬币都是正面,男士将获得3,如果两人的硬币都是反面,男士将获得1.如果两人的硬币一正一反,那么男士将失去2.男士的收益图如下图所示

美女和男人博弈过程的模拟(庄家和散户的博弈)_第1张图片

表面一看,上面每种情况出现的概率都是1/4, 所以最终男士得到的奖励为 0.25 * 3 + 0.25 * 1 - 0.25 * 2 -0.25 *2 = 0, 不赢不输嘛~

但是经过分析,如果美女把控好出硬币正面的概率,那么不管男士怎么调整出硬币正面的概率,经过多次博弈后,男士都会输! 这个分析过程略复杂,也不是本次要关注的重点,感兴趣的话,可以看视频里面的分析过程.我们暂且先记住结论:只要美女出正面的概率在(1/3,2/5)之间,那么男士就会一直输钱. (貌似好神秘的样子)


第二步 , 书写代码

因为过程比较简单,使用C,java,python都可以进行模拟.那就选择开发比较快的python.

# -*- coding: utf-8 -*-  
import random

def girl_result(probality_of_girl):
    probality=random.random()
    if probality < probality_of_girl:
        return "正面"
    else :
        return "反面"  
def boy_result(probility_of_boy):
  
    probality=random.random()
#    print(probality)
    if probality < probility_of_boy:
        return "正面"
    else:
        return "反面"
def game_gambing(times,probility_of_boy,probality_of_girl):
    money = 0
    for i in range(times):
        temp_result =girl_result(probality_of_girl)
        if temp_result == boy_result(probility_of_boy):
            if temp_result == "正面":
                money += 3
            else :
                money += 1
        else :
            money += -2     
    return money                         
if __name__ == '__main__':
    for j in range(1,10):
        game_times = 10000
        probality_of_girl = round(0.9,2)
        result_money =game_gambing(game_times,round(0.1*j,2),probality_of_girl) 
        print("女人出正面的概率为 "+str(probality_of_girl)+",第"+str(j)+"个男人出正面的概率为"+str(round(0.1*j,2))+",博弈次数为: "+str(game_times)+" 他赢得的钱为: "+str(result_money))
    
第三步 , 测试 :

按照结论,我们在1/32/5之间取一个数,比如0.37,如果美女一直以这个概率来出正面,那么多次博弈后,应该会稳赢.

假设有9个不同概率偏好的男士来进行博弈,他们出正面的的概率分别为0.10.9,分别博弈10000.博弈结果如下:

美女和男人博弈过程的模拟(庄家和散户的博弈)_第2张图片

为了进一步验证程序的正确性,我们可以调整美女出正面的概率,比如调成0.1,那么理论上来说,男人出正面的概率越低,,越容易赢到钱,因为这意味着在多数情况下,两人出的都是反面,看一下模拟的结果:

美女和男人博弈过程的模拟(庄家和散户的博弈)_第3张图片

如果美女出正面的概率偏大,比如0.9,那么男人出正面的概率越大,越容易赢到钱,因为这意味着在多数情况下,两人出的都是正面,看一下模拟结果:

美女和男人博弈过程的模拟(庄家和散户的博弈)_第4张图片

证明完毕~

感触:学好数学真的很重要.






你可能感兴趣的:(算法)