分配点彩票.py

2024-05-18 07:54:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在想办法让我的机器人在每次彩票游戏结束的时候,从彩票游戏的一个罐子里扣分。所以每场比赛都从1分开始,但每次有人买了一张票,它就会随机上升。在15分钟结束时,它应该找回球员和罐子,并根据你在列表中的排名确定你的分数。所以基本上,如果你是第一个在名单上,你赢得了大麻价值。当排名下降时,你赢得的分数就会下降,如果你接近或最后一个位置,你就会失去分数。玩家在被分配后所获得的所有积分之和不必等于0。你知道吗

蒂姆在彩票中得了第一名。他应该得到5676*1.66。此外,你从彩票中获得的所有分数都应该根据你在彩票中的排名而有所不同。但如果你在抽奖名单的最后,你应该失去分数。你知道吗

到目前为止,我的情况是:

lotteryStart = time.time()
players = []
pot = 1

def buyLottery(name):
  if name not in players:
  amount = int("30")
  if Point.getCost(name, amount) == True:
    multiplier = random.randint(217, 453)
    pot = int(multiplier+pot)
    different = float(time.time() - lotteryStart)
    years = int(different / Point.YEAR)
    days = int((different % Point.YEAR) / Point.DAY)
    hours = int((different % Point.DAY) / Point.HOUR)
    mins = int((different % Point.HOUR) / Point.MINUTE)
    secs = int(different % Point.MINUTE)
    if secs <= 0:
      if len(players) > 0:
        random.shuffle(players)
        for i in range(1,len(players)): 
           if i == 1:
             pot2 = int(pot*1.66)
           elif i == 2:
             pot2 = int(pot*1.33)
           elif i == 3:
             pot2 = int(pot)
           elif i == 4:
              pot = int(pot/1.66) #And so on but i dont want to keep doing elif 

Tags: name游戏iftime分数intpointelif
1条回答
网友
1楼 · 发布于 2024-05-18 07:54:06

我不理解你的彩票,我无法想象一张彩票,如果你买了一张随机金额的彩票,在现实生活中可能会赔钱,而这张彩票在现实生活中非常流行!你知道吗

话虽如此,我想你应该这样做:

ratios = []
for i in range(-2, len(players) - 2):
    if i < 0:
       ratios.append(1 - (i * 0.33)) # ratio > 1
    else:
        ratios.append(1 / (1 + (i * 0.33))) # ratio <= 1
winnings = [pot * r for r in ratios]

然后您可以很容易地将players[i]与它们的winnings[i]匹配。注意,我假设您意外地漏掉了pot / 1.33;否则,您将不得不稍微调整一下。你知道吗

对于10个玩家,我得到:

ratios == [1.6600000000000001, 1.33, 1.0, 0.7518796992481203, 
           0.6024096385542168, 0.5025125628140703, 0.43103448275862066, 
           0.3773584905660377, 0.33557046979865773, 0.3021148036253776]

相关问题 更多 >