2014-01-03 3 views
0

Я пытаюсь выяснить, как заставить моего бота распределять очки из банка из лотерейной игры, когда он заканчивается каждый раз. Таким образом, каждая игра начинается с 1 балла, но каждый раз, когда кто-то покупает билет, он увеличивается на случайную сумму. В конце пятнадцати минут он должен получить игроков и банк и основываться на том, где вы попали в список, в котором определены ваши очки. Таким образом, в основном, если вы первый в списке, вы выигрываете над значением банка. И когда рейтинг снизится, ваши очки, которые вы выиграете, опуститесь вниз, и если ваше ближайшее или последнее место вы потеряете очки. Сумма всех очков, которые игроки зарабатывают, не должна равняться 0 после того, как они распределены.Распределение очков для lottery.py

Например: Тим получил 1-е место в лотерее. Он должен получить 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 
+0

Как точки определяется? – thefourtheye

+0

По рейтингу. Я планирую использовать плеер [i] – user3103923

+0

Если сумма всех очков равна 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] 
+0

Вопрос, хотя. Как я могу определить, в каком месте они будут работать, используя цикл? – user3103923

+0

На каком месте находится? Ваш перетасованный список 'игроков' имеет ту же длину, что и' winnings', поэтому вы можете использовать 'for i в диапазоне (len (players)):' для получения индексов для обоих. – jonrsharpe

+0

Ах, хорошо, это правда. Огромное спасибо за помощь. Я очень его оценил. – user3103923

Смежные вопросы