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

喝酒规则:

一开始有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]

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

你可能感兴趣的:(python,游戏,算法,数据结构)