有个因公众号认识的朋友分享给我一个问题,我觉得很有意思,就用Python实现了一下,大家可以一起来想一想。
问题描述
赌场有一种游戏,称为“幸运7”,游戏规则是你丢两个骰子,如果其点数之和为7你就赢4元,不是你就输1元,请你分析一下,这样的规则是否公平?如果“幸运7”游戏中得到的点数为7,用户赢钱的额度设为多少,能保证多轮(假设为10万轮)此游戏后玩家能处于赢钱的状态?
首先从统计学的角度来分析这个问题,假设两枚骰子是独立的,掷一次骰子,每枚筛子可能掷的点数都是从1到6之间的整数,合计有如下36种可能:
标黄的为点数之和是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,则计数加1
print('10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:', count/100000*100,'%')
#输出打印结果
运行代码5次,结果分别是:
10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.743 %
10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.974 %
10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.583000000000002
10万次抛掷中,两枚筛子抛掷数值之和为7的概率为:16.445
10万次抛掷中,两枚筛子抛掷数值之和为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,则计数加1
y_money += j
#如果两枚筛子抛掷的数值之和为7,则赢钱账户加j
else:
s_money += 1
#如果两枚筛子抛掷的数值之和不为7,则输钱账户加1
final_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 ,此时玩客能赢钱
结果2
###############################
如果点数之和为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 ,此时玩客能赢钱
结果3
###############################
如果点数之和为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万轮)后玩家处于赢钱的状态。
感兴趣的朋友可以可以自己调整赢钱额度(步长设为小数)和循环轮数,分析一下结果会不会有什么不同。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有