上一期我们介绍了随机游走实验,这期我们将进行模拟赌徒掷骰子实验,当然离不开万能的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 Trueelse:print("骰子的大小为:",number," 你输了!")return False
接下来定义赌徒的信息以及财务状况:
import randomimport matplotlib.pyplot as pltdef gambler(funds,wager,game_count): #赌徒的本金,赌注,游戏次数current_game_count=0x=[]y=[]while current_game_count<game_count:if give_the_number():funds+=wagerx.append(current_game_count)y.append(funds)else:funds-=wagerx.append(current_game_count)y.append(funds)current_game_count+=1if funds<0:funds="Pennyless"plt.plot(x,y)print("本金已经累积到:",funds)
我们套上蒙特卡洛物理模型,进行循环100次掷骰子模拟,并通过matplotlib进行可视化展示:
n=0while n<50: #赌徒个数gambler(10000,1000,100)n+=1plt.xlabel('How many games does the gambler played')plt.ylabel('Funds')plt.show()
赌博100次测试结果:

可以看到有一半左右的人输掉了游戏负债累累,也有一半左右的人赢得盆丰钵满。
我们继续模拟
赌博1000次测试结果:

我们继续模拟
赌博10000次测试结果:

综上看掷骰子输和赢的概率都是五五开,貌似和掷多少次无太大关系。
通过不同次数的模拟我们都能看到有几个倒霉蛋负债累累,游戏结束后他们聚在一起商讨了一下如何能逆袭,最后他们研究出一种理论上稳赚不赔的方法,就是输掉游戏回合的下一轮赌注加倍,这样如果赢了不光能赚回上一轮输掉的钱还能赚到这一轮的赌注。于是他们找到了我要求修改游戏规则,但事实真的和他们想的一样吗?
下一期让我们来看看这几个倒霉蛋究竟能否成功逆袭?!
下期:【Python的可视化分析】蒙特卡洛模拟(下)
文章转载自数据信息化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




