Я тут прикручиваю к своему чатику рейтинг г+, очень простой. Но совет не помешает. Сразу скажу, исходим из имеющихся данных, поэтому все усложнения лесом. Нет никаких данных о финальных техах - поп-кап, дожитии до 15го, и тп. В наличии: список законченных партий для ников, написанных латиницей (легенда, привет). Используются только ники, помеченные как основные (верифицированные чтоли). Для каждого ника есть список алиасов, партии из них тоже входят в список. В теории рейтинг считается очень просто для каждого из алисов, но лично для меня это нафиг не нужно (да и не будет в чатике столько аккаунтов на юзера). Кстати ники с легенды могут быть учтены как алиасы к латинскому нику. На каждого алиаса-юзера есть список игр, с признаком (победа, рип, дожитие). Учитываются только партии, в которых есть хотя бы 1 победитель, и 1 доживший-мертвый, и убираются все подобные новайсам или извратам: if server == "spb" and (type == "novice" or type == "academy" or string.find(name, "novice") ~= nil) then elseif server == "msk" and (type == "novice" or type == "novice1xx" or type == "novice2xx") then elseif server == "legend" and (type == "test" or type == "другие" or type == "novice" or type == "unknown" or string.find(name, "zombie")) then Так как нет даже полноценного списка игроков для каждой игры, он составляется анализом всего xml. Имеем: число победителей = win, число доживших = live, число рипов = dead, общее число игроков = count Сложность партии rating = 100 * math.log(value.count / value.win) / math.log(2) (исходим из того, что дуэль есть простейшая партия с 1 (100 рейтингом Каждый победитель получает по свою долю от рейтинга , который отнимается от проигравших (дожившие условно по 1 доле, рипы по 2) Долю можно расчитать как alpha = rating / (2 * dead + live) Все бы ничего, но сдается мне что такой рейтинг будет отрицательным примерно для 99% игроков (У меня он получился ну очень минусовым, что несправедливо же ) C другой стороны, когда он отрицательный у всех, знак минус теряет какой либо смысл. Варианты: 1) Развернуть схему и плюсовать рейт всем, скажем по схеме, когда победителям начисляется аналогично, дожившим сумма на всех в 2 раза меньше, рипам в 4 раза меньше на всех. 2) Оставить как есть 3) Какой нахер рейтинг, галакси умерла? *** Edited 2/3/2018 8:37:02 PM UTC by Erema***
Erema, vice GM.
|