Example #1
0
        public ScoringResult Calculate(double boardStartingRating, double winnerRating, double loserRating, bool tie = false)
        {
            //http://en.wikipedia.org/wiki/Elo_rating_system
            //http://www.chess-mind.com/en/elo-system

            var winnerK = CalculateKFactor(boardStartingRating, winnerRating);
            var loserK  = CalculateKFactor(boardStartingRating, loserRating);

            var eW = 1 / (1 + Math.Pow(10, (loserRating - winnerRating) / F));
            var eL = 1 / (1 + Math.Pow(10, (winnerRating - loserRating) / F));

            var results = new ScoringResult();

            if (!tie)
            {
                results.WinnerDelta = Math.Round(winnerK * (1 - eW));
                results.LoserDelta  = Math.Round(loserK * (0 - eL));
            }
            else
            {
                results.WinnerDelta = Math.Round(winnerK * (.5 - eW));
                results.LoserDelta  = Math.Round(loserK * (.5 - eL));
            }

            return(results);
        }
Example #2
0
        public ScoringResult Calculate(double boardStartingRating, double winnerRating, double loserRating, bool tie = false)
        {
            //http://en.wikipedia.org/wiki/Elo_rating_system
            //http://www.chess-mind.com/en/elo-system

            var winnerK = CalculateKFactor(boardStartingRating, winnerRating);
            var loserK = CalculateKFactor(boardStartingRating, loserRating);

            var eW = 1 / (1 + Math.Pow(10,(loserRating - winnerRating)/F));
            var eL = 1 / (1 + Math.Pow(10,(winnerRating - loserRating)/F));

            var results = new ScoringResult();

            if (!tie)
            {
                results.WinnerDelta = Math.Round(winnerK * (1 - eW));
                results.LoserDelta = Math.Round(loserK * (0 - eL));
            }
            else
            {
                results.WinnerDelta = Math.Round(winnerK * (.5 - eW));
                results.LoserDelta = Math.Round(loserK * (.5 - eL));
            }

            return (results);
        }