Форум HeroesWorld-а - Показать сообщение отдельно - [ОБСУЖДЕНИЕ] Он-лайн рейтинг игроков на полных картах
Показать сообщение отдельно
#38
Старый 10.01.2017, 01:04
  #38
^
Dirty_Player
 
Аватар для Dirty_Player
Координатор
📖
Регистрация: 29.04.2007
Адрес: Las Vegas, Nevada
Сообщения: 11704
1750
Отправить сообщение для  Dirty_Player с помощью ICQ Dirty_Player#3487
Выставка наград
Регистрация: 29.04.2007
Адрес: Las Vegas, Nevada
Сообщения: 11704
1750
Отправить сообщение для  Dirty_Player с помощью ICQ Dirty_Player#3487
Выставка наград
По умолчанию
Re: [ОБСУЖДЕНИЕ] Он-лайн рейтинг игроков на полных картах

В нашем разделе рейтинг считается очень давно. С 2009 года мы пользуемся формулой, по которой считают рейтинг ФИДЕ в Шахматах. Система показала себя отлично. Естественно для объективности любого рейтинга нужна дистанция хотя бы в несколько сотен игр. Наш рейтинг выглядит ТАК

2. Формулы расчета рейтинга.

С ноября 2007 года по февраль 2009 года рейтинг считался по формуле, предложенной SS-D и обнулялся каждый сезон.
Сезон Весна 2009 года обсчитывался по двум системам, старой SS-D, и новой, предложенной StickyFingaz. С Лета 2009 голосованием форума полностью перешли на новую систему, по которой рассчитывается как сезонный рейтинг, обнуляемый в начале сезона, так и постоянный, необнуляемый с 1 марта 2009 года.
"Нулевым" уровнем считается 1500 рейтинговых очков, которые даются со старта всем игрокам перед первой учтенной в рейтинге партией.

Рейтинг считается следующим образом:

Пусть R1 и R2 - начальные рейтинги игроков.

Коэффициенты разницы игроков в рейтинге вычисляются так:
f1=max(-1, min((R1-R2)/400, 1));
f2=max(-1, min((R2-R1)/400, 1));
где min и max - функции, возвращающие минимальное и максимальное из двух чисел.

Очки, даваемые за победу (WP) и поражение (LP), вычисляются так:
WP1=max(1, 16*(1+f1));
WP2=max(1, 16*(1+f2));
LP1=min(-1, 16*(-1+f1));
LP2=min(-1, 16*(-1+f2));

Если побеждает первый игрок, то
R1->R1+(int)WP2;
R2->R2+(int)LP1;

если побеждает второй игрок, то
R1->R1+(int)LP2;
R2->R2+(int)WP1;

если игра заканчивается вничью, то
R1->R1+(int)((WP2-WP1)/2+0.5);
R2->R2+(int)((WP1-WP2)/2+0.5);

где (int) - функция, возвращающая целую часть числа.

Хотя не так важно, какая будет формула, главное как этот процесс автоматизировать. Для начала нужно внедрить формы рапорта в едином формате, а затем их просто копировать и обрабатывать.
Dirty_Player вне форума