为什么喝酒总比别人喝得多?用python计算酒场位置学

这篇博客探讨了一个有趣的喝酒游戏,通过Python计算不同位置玩家的饮酒量。游戏开始时,6杯酒分别含有0-5单位的酒,四个人轮流掷骰子喝酒。结果显示,后面的位置能少喝一些,但当酒量增加到1000时,位置选择的影响减小。
摘要由CSDN通过智能技术生成

喝酒规则:

一开始有6杯酒,里面的酒量分别是012345,4个人来玩,第一个人掷到几,就要喝对应点数的酒。

如果对应酒杯里有酒,则干掉,然后继续掷,直到杯子里是空的。然后灌满换下一个人。

目标:

计算出每个人喝的酒量,判断哪个位置喝得多

import random

BeerPool = 100            # 一共有100的酒,喝完为止
players_beer = [0,0,0,0]   # 4个玩家喝掉的酒
cup_beer = [0,1,2,3,4,5]   # 6个杯子中的酒
i = 0                      # 玩家索引
add_beer = 1               # 给酒杯里添加酒的量(测评取1-5)

def roll():                # 掷骰子生成0到5的数
    return random.randint(0,5)

for j in range(10000):     # 循环1w次求平均值
    BeerPool = 100         # 循环重置
    cup_beer = [0, 1, 2, 3, 4, 5]
    i = 0

    while BeerPool > 0:
        if i == 4:
            i = 0
        while True:
            num = roll()
            if cup_beer[num] == 0:    # 杯子里没酒,加酒,换下一个人
                cup_beer[num] = add_beer
                i += 1
                break
            else:                     # 否则喝光,继续掷骰子
                cup_beer[num] = 0
                if BeerPool > add_beer:  # 最后杯子里的酒不能超过总酒池
                    players_beer[i] += num
                    BeerPool -= num
                else:
                    players_beer[i] += BeerPool
                    BeerPool = 0
                    
players_beer = list(map(lambda x:x/10000,players_beer)) # 每个元素除以1w
players_beer = [int(k) for k in players_beer]  # 格式化为int类型
print(players_beer)

输出结果为:[27, 25, 24, 23]

当把酒池的值改成1000时

输出结果为:[252, 250, 248, 248]

总结:选位置最好选往后的,这样可以少喝点,当然如果酒足够多选哪个位置也差不多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值