lottery.py的分发点

时间:2014-01-03 06:46:21

标签: python

我正在试图弄清楚如何让我的机器人在彩票游戏每次结束时从彩池中分发积分。所以每场比赛都从1点开始,但每当有人买票时,它会随机增加。在十五分钟结束时,它应该检索球员和底池,并根据您在列表中排名的位置确定您的分数。所以基本上如果你是第一个在榜单中,你就赢得了底池价值。如果排名下降,你赢得的积分会下降,如果你的近点或最后一点,你会失分。玩家获得的所有积分总和在被分配后不必等于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 

1 个答案:

答案 0 :(得分:1)

了解您的彩票;我无法想象一个彩票,你随机购买一张票,并且可能会在现实生活中非常受欢迎的票价之上赔钱!

话虽这么说,我想你想做这样的事情:

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]