暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Python的可视化分析】蒙特卡洛模拟(中)

数据信息化 2019-11-21
960


    上一期我们介绍了随机游走实验,这期我们将进行模拟赌徒掷骰子实验,当然离不开万能的Python啦~

    首先我们制定一个游戏规则,掷骰子🎲。

    骰子共有6个面,我们模拟有50名赌徒,假设每个赌徒都很执着,一直买小(也就是掷出1、2、3为获胜)。同时设定每个赌徒的本金都有10000元,每轮的赌注为1000元,共进行100次、1000次、10000次的模拟。让我们看看究竟有多少幸运儿走上人生巅峰吧?

首先定义骰子的游戏规则:

def give_the_number():
number=random.randint(1,6)

if number <=3:
         print("骰子的大小为:",number," 你赢了!")
return True
else:
         print("骰子的大小为:",number," 你输了!")
return False


接下来定义赌徒的信息以及财务状况:

import random
import matplotlib.pyplot as plt


def gambler(funds,wager,game_count):   #赌徒的本金,赌注,游戏次数
current_game_count=0
x=[]
y=[]

while current_game_count<game_count:
if give_the_number():
funds+=wager
x.append(current_game_count)
y.append(funds)
else:
funds-=wager
x.append(current_game_count)
y.append(funds)
current_game_count+=1
if funds<0:
funds="Pennyless"
plt.plot(x,y)
    print("本金已经累积到:",funds)


我们套上蒙特卡洛物理模型,进行循环100次掷骰子模拟,并通过matplotlib进行可视化展示:

n=0  
while n<50:  #赌徒个数
    gambler(10000,1000,100)
n+=1
plt.xlabel('How many games does the gambler played')
plt.ylabel('Funds')
plt.show()


赌博100次测试结果:

可以看到有一半左右的人输掉了游戏负债累累,也有一半左右的人赢得盆丰钵满。

我们继续模拟

赌博1000次测试结果:

我们继续模拟

赌博10000次测试结果:

    综上看掷骰子输和赢的概率都是五五开,貌似和掷多少次无太大关系。

   通过不同次数的模拟我们都能看到有几个倒霉蛋负债累累,游戏结束后他们聚在一起商讨了一下如何能逆袭,最后他们研究出一种理论上稳赚不赔的方法,就是输掉游戏回合的下一轮赌注加倍,这样如果赢了不光能赚回上一轮输掉的钱还能赚到这一轮的赌注。于是他们找到了我要求修改游戏规则,但事实真的和他们想的一样吗?

    下一期让我们来看看这几个倒霉蛋究竟能否成功逆袭?!

下期:【Python的可视化分析】蒙特卡洛模拟(下)

文章转载自数据信息化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论