Как организовать ставки / призы в игре с результатами ранжирования? - PullRequest
0 голосов
/ 01 мая 2020

Задача

Я делаю многопользовательскую игру со ставками, в которой игроки в конечном итоге оцениваются по их окончательному счету. Я хочу выяснить, сколько денег они выигрывают / проигрывают в конце, основываясь на:

  1. их рейтинге / счете;
  2. размере их ставки.

Пример

Была игра с 5 игроками, которая закончилась так:

1. Ben, score 2115, bet 100
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
5. Richard, score 987, bet 50

Мысли

Теперь, как мне решить, кто сколько получит? Деньги? Единственное, что для меня очевидно, это то, что игрок № 1 должен хотя бы вернуть свою ставку, чтобы он не проиграл.

Я даже не могу сказать, что в критическом случае с двумя игроками вся ставка Игрок 2-го ранга получает победителя.

Почему я хочу, чтобы размер ставок учитывался, чтобы не допустить, чтобы игрок, который делает ставку в 1 монету, играл против другого игрока, который поставил 100 монет и, таким образом, рискует только 1 монета, в то время как их потенциальный приз равен 100. Это несправедливо по отношению к игроку, который ставит 100 монет, потому что они рискуют в 100 раз больше, чем могут получить. Я боюсь потенциального злоупотребления.

Еще одна сомнительная ситуация, которая теоретически возможна, заключается в том, что игроки получают одинаковый счет. Если ставки равны или равны, мы можем считать это ничьей, но что если игроки делают разные ставки? Они были в неравных условиях, имели неравный риск, но достигли того же результата, так что, разве это не победа для одного из них?

Возможные решения

Я думал о том, чтобы сделать какой-нибудь вариант " верхняя половина "игроков-победителей", "нижняя половина" проигравших и возможный средний игрок - ящик. Затем, в вышеупомянутой игре, Ленни - комод и получает обратно свою ставку 30, не проигрывая и не выигрывая. Марта и Ричард теряют свои ставки, и эти 120 человек делятся между победителями Беном и Джимом. Но есть некоторые проблемы:

  • Бен занял первое место, и это дает повод дать ему больше, но Джим сделал в 2,5 раза более высокую ставку, в то время как его счет только на 10% ниже, чем у Джима. Кто должен получить больше, Бен или Джим?
  • Что если и Ричард, и Марта поставят только 1 монету или даже 0? Это ставит и Бена, и Джима в несправедливую ситуацию, когда их риск намного превышает их потенциальный выигрыш.

Я пытался изучить системы ставок в других играх, таких как покер, рулетка, скачки, но ничто в точности не соответствует этой ситуации.

В худшем случае я мог бы рассмотреть вопрос о награждении игроков из «дома» вместо того, что проиграли другие игроки. Но я бы хотел сохранить это как игру между игроками, а не против дома.

PS Извините, если вопрос не совсем подходит для переполнения стека. На мой взгляд, это фактически вопрос программирования алгоритма / формулы для обработки определенных c данных. Я рассмотрю вопрос в другом месте, получу ли я хорошее предложение, где.

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Вот вариант победителей "верхней половины" и проигравших "нижней половины" (с "серединой" в качестве ничьи). Ставка проигравших на деньги - это банк.

Возьмите наименьшую выигрышную ставку и умножьте ее на количество победителей. Если эта сумма больше, чем в банке, тогда сумма равна сумме в банке. Теперь разделите эту сумму среди победителей пропорционально их количеству очков. Удалите игрока, у которого была самая маленькая ставка. Повторите.

Если в банке все еще есть деньги, эти деньги распределяются между проигравшими пропорционально их ставкам.

Пример:

name:   Ben  Jim  Len  Mar  Ric
bets:   100  250   30   70   50
score: 2115 1856 1512 1220  987

pot: 120
minimum winning bet times number of winners: 100 * 2 = 200
amount to split: 120 (since 120<200)
Ben gets 120 * 2115 / (2115+1856) = 64
Jim gets 120 * 1856 / (2115+1856) = 56

Cash after the game is finished:
name:   Ben  Jim  Len  Mar  Ric
cash:   164  306   30    0    0

Пример 2:

name:   Ben  Jim   Lu    Tim  Mar Ric 
bets:   100  250   10    120  200  80
score: 2115 1856 1512   1220  987 642

pot: 400
minimum winning bet times number of winners: 10 * 3 = 30
winners total score: 2115+1856+1512 = 5483
Ben gets 30 * 2115/5483 = 12
Jim gets 30 * 1856/5483 = 10
Lu  gets 30 * 1512/5483 =  8
remove 10 from each winning bet, Lu is done

remaining pot: 370
minimum winning bet times number of winners: 90 * 2 = 180
winners total score = 2115+1856 = 3971
Ben gets 180 * 2115/3971 = 96
Jim gets 180 * 1856/3971 = 84
remove 90 from each winning bet, Ben is done

remaining pot: 190
minimum winning bet times number of winners: 150 * 1 = 150
Jim gets 150

remaining pot: 40
total bets by the losers: 400
Tim gets 40 * 120/400 = 12
Mar gets 40 * 200/400 = 20
Ric gets 40 *  80/400 =  8

Cash after the game is finished:
name:   Ben  Jim   Lu    Tim  Mar Ric 
cash:   208  494   18     12   20   8
1 голос
/ 02 мая 2020

Сопоставьте верхнюю ставку с нижней ставкой. Повторите.

В случае ничьих, объедините свои ставки, выясните, сколько группа выигрывает или проигрывает, а затем делите это пропорционально тому, сколько они дали. (Если получится неравномерно, случайным образом выберите, кто набирает / теряет последнее очко.)

Итак, в вашем примере мы бы сделали следующее:

1. Ben, score 2115, bet 100
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
5. Richard, score 987, bet 50

Совпадение Ben с Richard , Ben выигрывает 50, Richard выпадает.

1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70

Совпадение Ben с Martha. Ben выигрывает 50 и выпадает.

1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20

Совпадение Jim с Martha. Jim выигрывает 20 и Martha выпадает.

1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30

Совпадение Jim с Lenny. Jim выигрывает 30 и Lenny выпадает.

1. Jim, score 1856, bet 200

Все готово. Итоговое деление наград:

1. Ben, score 2115, has 200
2. Jim, score 1856, has 300
3. Lenny, score 1512, has 0
4. Martha, score 1220, has 0
5. Richard, score 987, has 0

А теперь выигрыши обычно go в верхней половине. И никто не может получить или потерять больше, чем они смирились.

...