有个因公众号认识的朋友分享给我一个问题,我觉得很有意思,就用Python实现了一下,大家可以一起来想一想。


标黄的为点数之和是7的6种情况,可以发现赢的概率为:6/36≈0.16667。即16.667%的概率该名玩家会赢4元,83.33%的概率该名玩家会输1元。
用python模拟该过程,让计算机循环执行10万次,看这10万次中有多少次两枚骰子掷的点数之和为7,具体语句如下:
from random import *#导入随机模块count = 0#初始化筛子之和为7的计数for i in range(100000):num1 = randint(1, 6)#产生一个1到6之间的随机数,作为筛子1的得数num2 = randint(1, 6)#产生一个1到6之间的随机数,作为筛子2的得数if num1 + num2 == 7:count += 1#如果两枚筛子抛掷的数值之和为7,则计数加1print('10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:', count/100000*100,'%')#输出打印结果
运行代码5次,结果分别是:
10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.743 %10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.974 %10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.58300000000000210万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.44510万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.900000000000002 %
可以发现计算机模拟的结果和统计分析的结果相差不超过0.01。
进一步尝试如果“幸运7”游戏中得到的点数为7,用户赢钱的额度设为多少,能保证多轮(假设为10万轮)此游戏后玩家能处于赢钱的状态?具体语句如下:
from random import *#导入随机模块for j in range(2,10):y_money = 0#初始化赢钱金额s_money = 0#初始化输钱金额count = 0#初始化筛子之和为7的计数final_money = 0#初始化总计金额print('###############################')print('如果点数之和为7,赢钱额度为:', j)#打印当前赢钱额度取值for i in range(100000):num1 = randint(1, 6)#产生一个1到6之间的随机数,作为筛子1的得数num2 = randint(1, 6)#产生一个1到6之间的随机数,作为筛子2的得数if num1 + num2==7:count += 1#如果两枚筛子抛掷的数值之和为7,则计数加1y_money += j#如果两枚筛子抛掷的数值之和为7,则赢钱账户加jelse:s_money += 1#如果两枚筛子抛掷的数值之和不为7,则输钱账户加1final_money = y_money - s_money#循环结束后账户总计金额print('此时总计金额:', final_money)#打印账户的总计金额if final_money>0:print('当点数之后为7时,赢钱额度为:',j, ',此时玩客能赢钱')#如果账户的总计金额大于0,则说明用户此时能赢钱else:print('当点数之后为7时,赢钱额度为:',j, ',此时玩客会输钱')
运行代码5次,结果分别是:
结果1
##############################如果点数之和为7,赢钱额度为:2此时总计金额:-50458当点数之后为7时,赢钱额度为:2 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:3此时总计金额:-33580当点数之后为7时,赢钱额度为:3 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:4此时总计金额:-16690当点数之后为7时,赢钱额度为:4 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:5此时总计金额:-736当点数之后为7时,赢钱额度为:5 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:6此时总计金额:17586当点数之后为7时,赢钱额度为:6 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:7此时总计金额:33456当点数之后为7时,赢钱额度为:7 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:8此时总计金额:50813当点数之后为7时,赢钱额度为:8 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:9此时总计金额:65060当点数之后为7时,赢钱额度为:9 ,此时玩客能赢钱
##############################如果点数之和为7,赢钱额度为:2此时总计金额:-49267当点数之后为7时,赢钱额度为:2 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:3此时总计金额:-33752当点数之后为7时,赢钱额度为:3 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:4此时总计金额:-16750当点数之后为7时,赢钱额度为:4 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:5此时总计金额:206当点数之后为7时,赢钱额度为:5 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:6此时总计金额:16886当点数之后为7时,赢钱额度为:6 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:7此时总计金额:32480当点数之后为7时,赢钱额度为:7 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:8此时总计金额:50012当点数之后为7时,赢钱额度为:8 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:9此时总计金额:67170当点数之后为7时,赢钱额度为:9 ,此时玩客能赢钱
##############################如果点数之和为7,赢钱额度为:2此时总计金额:-49786当点数之后为7时,赢钱额度为:2 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:3此时总计金额:-32784当点数之后为7时,赢钱额度为:3 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:4此时总计金额:-17415当点数之后为7时,赢钱额度为:4 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:5此时总计金额:1070当点数之后为7时,赢钱额度为:5 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:6此时总计金额:16466当点数之后为7时,赢钱额度为:6 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:7此时总计金额:32184当点数之后为7时,赢钱额度为:7 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:8此时总计金额:49382当点数之后为7时,赢钱额度为:8 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:9此时总计金额:67850当点数之后为7时,赢钱额度为:9 ,此时玩客能赢钱
结果4
##############################如果点数之和为7,赢钱额度为:2此时总计金额:-50068当点数之后为7时,赢钱额度为:2 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:3此时总计金额:-33016当点数之后为7时,赢钱额度为:3 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:4此时总计金额:-17170当点数之后为7时,赢钱额度为:4 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:5此时总计金额:284当点数之后为7时,赢钱额度为:5 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:6此时总计金额:17376当点数之后为7时,赢钱额度为:6 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:7此时总计金额:33936当点数之后为7时,赢钱额度为:7 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:8此时总计金额:49472当点数之后为7时,赢钱额度为:8 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:9此时总计金额:66790当点数之后为7时,赢钱额度为:9 ,此时玩客能赢钱
结果5
##############################如果点数之和为7,赢钱额度为:2此时总计金额:-49876当点数之后为7时,赢钱额度为:2 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:3此时总计金额:-33372当点数之后为7时,赢钱额度为:3 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:4此时总计金额:-15535当点数之后为7时,赢钱额度为:4 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:5此时总计金额:-292当点数之后为7时,赢钱额度为:5 ,此时玩客会输钱##############################如果点数之和为7,赢钱额度为:6此时总计金额:16403当点数之后为7时,赢钱额度为:6 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:7此时总计金额:33984当点数之后为7时,赢钱额度为:7 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:8此时总计金额:49733当点数之后为7时,赢钱额度为:8 ,此时玩客能赢钱##############################如果点数之和为7,赢钱额度为:9此时总计金额:65720当点数之后为7时,赢钱额度为:9 ,此时玩客能赢钱
分析5次代码运行结果知,如果点数之和为7,赢钱额度为4,此时玩家会输钱。
赢钱额度为5,此时玩家有可能会输钱,也有可能会赢钱,其中输钱的次数为2,赢钱的次数为3。
赢钱额度大于等于6,此时玩家会赢钱。
从Python仿真结果可以得出结论:点数之和为7你就赢4元,不是你就输1元,这样的规则是不公平的,如果玩的次数够多最后的结果都是玩家输钱。
如果赢钱的额度设为6,能保证多轮(10万轮)后玩家处于赢钱的状态。
往期回顾:


扫一扫关注我
13162366985
投稿微信号、手机号
原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。