赌场游戏——幸运7真的幸运吗?(Python模拟仿真)

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

在这里插入图片描述
首先从统计学的角度来分析这个问题,假设两枚骰子是独立的,掷一次骰子,每枚筛子可能掷的点数都是从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万轮)后玩家处于赢钱的状态。
  
感兴趣的朋友可以可以自己调整赢钱额度(步长设为小数)和循环轮数,分析一下结果会不会有什么不同。
  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。

おすすめ

転載: blog.csdn.net/qq_32532663/article/details/116894406