public ScoreResult Calculate(PlayarStatisistics redOffensive, PlayarStatisistics redDefensive, PlayarStatisistics blueOffensive, PlayarStatisistics blueDefensive, int goalsRed, int goalsBlue, int gamesPrPlayer, DateTime dateTime)
        {
            var rating       = new EloRating(redOffensive.Score + redDefensive.Score, blueOffensive.Score + blueDefensive.Score, goalsRed, goalsBlue, gamesPrPlayer);
            var winningPrice = Math.Max(rating.Point1, rating.Point2) + Math.Abs(goalsBlue - goalsRed);

            return(GetScoreResult(redOffensive, redDefensive, blueOffensive, blueDefensive, goalsRed, goalsBlue, winningPrice, dateTime));
        }
Beispiel #2
0
        public EloRatingGoal(double currentRating1, double currentRating2, int score1, int score2, int gamesPrPlayer)
        {
            if ((score1 + score2) == 0)
            {
                score1 = score2 = 1;
            }
            var eloTeam1 = new EloRating(currentRating1, currentRating2, 1, 0, gamesPrPlayer);
            var eloTeam2 = new EloRating(currentRating1, currentRating2, 0, 1, gamesPrPlayer);
            var norm     = Math.Abs(score1 - score2) * ((double)Math.Max(score1, score2) / 10);

            if (norm < 1)
            {
                norm = 1;                                                                      //score1==score2
            }
            Point1 = Math.Round((score1 * eloTeam1.Point1 + score2 * eloTeam2.Point1) / norm); //Goal:

            //var eloTeam3 = new EloRating(currentRating1, currentRating2, score1, score2);
            // Half: Point1 = Math.Round((((score1 * eloTeam1.Point1 + score2 * eloTeam2.Point1)/ norm) + eloTeam3.Point1)/2);
            // Thirds: Point1 = Math.Round((((score1 * eloTeam1.Point1 + score2 * eloTeam2.Point1)/ norm) + eloTeam3.Point1 + eloTeam3.Point1)/3);
            // Elo: Point1 = eloTeam3.Point1;

            Point2 = -Point1;
        }
 public ScoreResult Calculate(PlayarStatisistics redOffensive, PlayarStatisistics redDefensive, PlayarStatisistics blueOffensive, PlayarStatisistics blueDefensive, int goalsRed, int goalsBlue, int gamesPrPlayer, DateTime dateTime)
 {
     var rating = new EloRating( redOffensive.Score + redDefensive.Score, blueOffensive.Score + blueDefensive.Score, goalsRed, goalsBlue, gamesPrPlayer);
     var winningPrice = Math.Max(rating.Point1, rating.Point2) + Math.Abs(goalsBlue - goalsRed);
     return GetScoreResult(redOffensive, redDefensive, blueOffensive, blueDefensive, goalsRed, goalsBlue, winningPrice, dateTime);
 }