примерный набросок турнира "win the death"
для начала донатят только участники в приз фонд(позже придумаю, чтобы донатили зрители, но это примерно будет так , как будто они донатят своему любимому игроку)
например у нас есть 5 участников, [p1,p2,p3,p4,p5]
каждый внес такие суммы
p1:1000р, p2:1000,p3:800,p4:700,p5:600
кратко запишем так
[1000,1000,800,700,600]
призовой фонд 4100р
каждый играет с каждым, если кто-то отказыватеся играть с другим, очки уходят предложившему
каждый может играть сколько угодго матчей с определенным игроком, просто будет браться среднее количество очков за все игры
для каждого игрока суммируются очки игры с другими игроками
это его конечный счет или рейтинг
расчет призового фонда будет пропорционально очкам
на базе донатов можем посчитать силу каждого игрока(или рейтинг)
[1,1,0.8,0.7,0.6]
уточнения по рейтингу: рейтинг каждого игрока это количество очков в турнире(а очки пропорциональны деньгам в призовом фонде), рейтинг можно увеличить , добавив в призовой фонд какое-то количество рублей/уе/коинов
например 3 игрока
один внес 2000р, второй 4000, третий 6000
1: 2000/sum=2000/12000=1/6
2) 4000/12000=1/3
3) 6000/12000=0.5
если я первому добавлю 10000 то у него рейтинг будет 12/22
у других 4/22 и 6/22
итак, если играют игроки с рейтингом 1 и 1 , то количество очков , который получит первый будет пропорционально 1 и у второго тоже
если играют игроки с рейтингом 1 и 0.8
то если побеждает первый , он получает пропорционально 0.8
а если второй , то он получит пропорционально 1
как считаются очки , я описал в посте выше
например
если берется шаблон спайдер и первый игрок говорит , что выиграет к 40 дню, второй на 50 день, но если первый выигрывает на 60 день, он примерно получит 661 очков, проигравший 333
это базовый коэффициент расчета очков
еще влияет, кто назвал дату выигрыша раньше, коэфф будет (d1-d2)/(d1+d2)+1
в данном случае 1+1/9, если первый выигрывает , то его очки умножаются на 1.111
если у второго игрока рейтинг 0.8, то очки умножаются на понижающий коэфф , то есть на 0.8
в итоге
первый игрок А1, рейтинг 1
второй игрок А2, рейтинг 0.8
первый выиграл на 60й день, значит он получит 667 очков-это базовая награда
так как он назвал день победы раньше(40й день против 50 дня), то его призовые очки умножаются на 1.1
но так как он играл с соперником с меньшим рейтингом
, базовая награда умножается на 0.8(рейтинг слабого игрока)
в итоге, выигрыш будет 667*1.1111*0.8=592 очка(тут надо подумать чтобы приз не улетал ниже 500, если рейтинг у лузера в два раза ниже, то приз очки у победителя например будут 501 при условии что получается ниже 500)
схема расчет очков выигрыша по дням
"day:40 loser prize:0 winner prize: 1000"
"day:41 loser prize:45 winner prize: 955"
"day:42 loser prize:83 winner prize: 917"
"day:43 loser prize:115 winner prize: 885"
"day:44 loser prize:143 winner prize: 857"
"day:45 loser prize:167 winner prize: 833"
"day:46 loser prize:187 winner prize: 813"
"day:47 loser prize:206 winner prize: 794"
"day:48 loser prize:222 winner prize: 778"
"day:49 loser prize:237 winner prize: 763"
"day:50 loser prize:250 winner prize: 750"
"day:51 loser prize:262 winner prize: 738"
"day:52 loser prize:273 winner prize: 727"
"day:53 loser prize:283 winner prize: 717"
"day:54 loser prize:292 winner prize: 708"
"day:55 loser prize:300 winner prize: 700"
"day:56 loser prize:308 winner prize: 692"
"day:57 loser prize:315 winner prize: 685"
"day:58 loser prize:321 winner prize: 679"
"day:59 loser prize:328 winner prize: 672"
"day:60 loser prize:333 winner prize: 667"
"day:61 loser prize:339 winner prize: 661"
"day:62 loser prize:344 winner prize: 656"
"day:63 loser prize:348 winner prize: 652"
"day:64 loser prize:353 winner prize: 647"
"day:65 loser prize:357 winner prize: 643"
"day:66 loser prize:361 winner prize: 639"
"day:67 loser prize:365 winner prize: 635"
код расчета выигрыша
win_day=40
score=500
(0..50).each do |day|
ff = 1+day*0.1
winning = (1.0/ff * score).round
p "day:#{win_day+day} loser prize:#{score-winning} winner prize: #{score+winning}"
end
для начала донатят только участники в приз фонд(позже придумаю, чтобы донатили зрители, но это примерно будет так , как будто они донатят своему любимому игроку)
например у нас есть 5 участников, [p1,p2,p3,p4,p5]
каждый внес такие суммы
p1:1000р, p2:1000,p3:800,p4:700,p5:600
кратко запишем так
[1000,1000,800,700,600]
призовой фонд 4100р
каждый играет с каждым, если кто-то отказыватеся играть с другим, очки уходят предложившему
каждый может играть сколько угодго матчей с определенным игроком, просто будет браться среднее количество очков за все игры
для каждого игрока суммируются очки игры с другими игроками
это его конечный счет или рейтинг
расчет призового фонда будет пропорционально очкам
на базе донатов можем посчитать силу каждого игрока(или рейтинг)
[1,1,0.8,0.7,0.6]
уточнения по рейтингу: рейтинг каждого игрока это количество очков в турнире(а очки пропорциональны деньгам в призовом фонде), рейтинг можно увеличить , добавив в призовой фонд какое-то количество рублей/уе/коинов
например 3 игрока
один внес 2000р, второй 4000, третий 6000
1: 2000/sum=2000/12000=1/6
2) 4000/12000=1/3
3) 6000/12000=0.5
если я первому добавлю 10000 то у него рейтинг будет 12/22
у других 4/22 и 6/22
итак, если играют игроки с рейтингом 1 и 1 , то количество очков , который получит первый будет пропорционально 1 и у второго тоже
если играют игроки с рейтингом 1 и 0.8
то если побеждает первый , он получает пропорционально 0.8
а если второй , то он получит пропорционально 1
как считаются очки , я описал в посте выше
например
если берется шаблон спайдер и первый игрок говорит , что выиграет к 40 дню, второй на 50 день, но если первый выигрывает на 60 день, он примерно получит 661 очков, проигравший 333
это базовый коэффициент расчета очков
еще влияет, кто назвал дату выигрыша раньше, коэфф будет (d1-d2)/(d1+d2)+1
в данном случае 1+1/9, если первый выигрывает , то его очки умножаются на 1.111
если у второго игрока рейтинг 0.8, то очки умножаются на понижающий коэфф , то есть на 0.8
в итоге
первый игрок А1, рейтинг 1
второй игрок А2, рейтинг 0.8
первый выиграл на 60й день, значит он получит 667 очков-это базовая награда
так как он назвал день победы раньше(40й день против 50 дня), то его призовые очки умножаются на 1.1
но так как он играл с соперником с меньшим рейтингом
, базовая награда умножается на 0.8(рейтинг слабого игрока)
в итоге, выигрыш будет 667*1.1111*0.8=592 очка(тут надо подумать чтобы приз не улетал ниже 500, если рейтинг у лузера в два раза ниже, то приз очки у победителя например будут 501 при условии что получается ниже 500)
схема расчет очков выигрыша по дням
"day:40 loser prize:0 winner prize: 1000"
"day:41 loser prize:45 winner prize: 955"
"day:42 loser prize:83 winner prize: 917"
"day:43 loser prize:115 winner prize: 885"
"day:44 loser prize:143 winner prize: 857"
"day:45 loser prize:167 winner prize: 833"
"day:46 loser prize:187 winner prize: 813"
"day:47 loser prize:206 winner prize: 794"
"day:48 loser prize:222 winner prize: 778"
"day:49 loser prize:237 winner prize: 763"
"day:50 loser prize:250 winner prize: 750"
"day:51 loser prize:262 winner prize: 738"
"day:52 loser prize:273 winner prize: 727"
"day:53 loser prize:283 winner prize: 717"
"day:54 loser prize:292 winner prize: 708"
"day:55 loser prize:300 winner prize: 700"
"day:56 loser prize:308 winner prize: 692"
"day:57 loser prize:315 winner prize: 685"
"day:58 loser prize:321 winner prize: 679"
"day:59 loser prize:328 winner prize: 672"
"day:60 loser prize:333 winner prize: 667"
"day:61 loser prize:339 winner prize: 661"
"day:62 loser prize:344 winner prize: 656"
"day:63 loser prize:348 winner prize: 652"
"day:64 loser prize:353 winner prize: 647"
"day:65 loser prize:357 winner prize: 643"
"day:66 loser prize:361 winner prize: 639"
"day:67 loser prize:365 winner prize: 635"
код расчета выигрыша
win_day=40
score=500
(0..50).each do |day|
ff = 1+day*0.1
winning = (1.0/ff * score).round
p "day:#{win_day+day} loser prize:#{score-winning} winner prize: #{score+winning}"
end