версия Python | Javascript версия | Технический документ
Итак, я работаю над сайтом, чтобы рассчитать рейтинги Glicko для двух игровых игр. Он включает в себя много арифметики с плавающей запятой (квадратные корни, показатели, деление, все неприятные вещи), и я почему-то получаю совершенно другой ответ от реализации Python алгоритма, который я переводил по строке. Версия Python дает в основном ожидаемый ответ для примера, найденного в исходном документе, описывающем алгоритм, но версия Javascript довольно немного выключена.
Я сделал ошибку в переводе или математику с плавающей запятой Javascript просто менее точную?
Expected answer: [1464, 151.4]
Python answer: [1462, 155.5]
Javascript answer: [1470.8, 89.7]
Таким образом, расчет рейтинга не так плох, будучи точным 99,6%, но дисперсия отключена на 2/3!
Изменить: люди указали, что значение по умолчанию для RD в версии Pyglicko равно 200. Это случай, когда исходный разработчик уходит в тестовый код, на который я верю, поскольку тестовый пример выполняется для человека с RD 200, но, очевидно, значение по умолчанию должно быть 350. Однако я указал 200 в моем тестовом примере в Javascript, так что это не проблема.
Изменить: Изменен алгоритм использования карты/уменьшения. Рейтинг менее точный, дисперсия более точная, как по какой-либо заметной причине. Начинается наступление.