public TeamReportStats(Dictionary <string, List <Helper.LetterDistribution> > lettersDict, Dictionary <int, List <DataObjects.AttributeType> > attributesDict, int competitionId, string teamName, sakilaEntities4 db, bool isHomeTeam) { Team = db.team.First(x => x.TeamName == teamName); var relevantMatches = MainCalculator.GetTeamLatesMatches(db, Team.TeamID, competitionId); TeamForm = LettersSequenceCalculator.GetTeamLatestSequence(db, Team.TeamID, competitionId); TeamOverallBalance = new TeamOverallBalance(Team, competitionId, isHomeTeam, relevantMatches); TeamGoalsStats = new TeamGoalsStats(Team, competitionId, isHomeTeam, db, relevantMatches); TeamAttributes = Helper.GetTeamAttributeFromDict(Team.TeamID, attributesDict); TeamAttributesString = Helper.GetTeamAttributesList((int)Team.TeamID, attributesDict); string homeTeamSeq; LettersDistribution = LettersSequenceCalculator.BuildSequenceStringExpectation(db, Team.TeamID, competitionId, lettersDict, out homeTeamSeq); TeamLastThreeResults = homeTeamSeq; }
public static LettersWinner GetLettersExpectedWinner(Helper.LetterDistribution homeLetters, Helper.LetterDistribution awayLetters) { var decimalList = new List <Helper.LetterDistribution> { awayLetters, homeLetters }; var averageCount = decimalList.Select(x => x.Count).Average(); string winner; if (IsTheSameResult(homeLetters.Letter, awayLetters.Letter, out winner)) { var conf = Math.Round(decimalList.Select(x => x.Percent).Sum() * 100); return(new LettersWinner { CountAverage = averageCount, Percent = conf, Winner = winner }); } var higherPercent = decimalList.OrderByDescending(x => x.Percent).First(); if (higherPercent.Percent == homeLetters.Percent) { return(new LettersWinner { CountAverage = averageCount, Percent = Math.Round(higherPercent.Percent * 100), Winner = "Home" }); } return(new LettersWinner { CountAverage = averageCount, Percent = Math.Round(higherPercent.Percent * 100), Winner = "Away" }); }
public static string GetLettersExpectedWinners(Helper.LetterDistribution homeLetters, Helper.LetterDistribution awayLetters) { var decimalList = new List <Helper.LetterDistribution> { awayLetters, homeLetters }; string winner; if (IsTheSameResult(homeLetters.Letter, awayLetters.Letter, out winner)) { var conf = Math.Round(decimalList.Select(x => x.Percent).Sum() * 100); return(winner + "(" + conf + "%)"); } var higherPercent = decimalList.OrderByDescending(x => x.Percent).First(); if (higherPercent.Percent == homeLetters.Percent) { return("Home (" + Math.Round(higherPercent.Percent * 100) + "%)"); } return("Away (" + Math.Round(higherPercent.Percent * 100) + "%)"); if (IsTheSameResult(homeLetters.Letter, awayLetters.Letter, out winner)) { if (homeLetters.Percent >= 0.43m && awayLetters.Percent >= 0.43m) { return(winner + " (100%)"); } if (homeLetters.Percent >= 0.43m || awayLetters.Percent >= 0.43m) { return(winner + " (80%)"); } return(winner + " (70%)"); } if (homeLetters.Percent > awayLetters.Percent) { var confidence = 0.4m; if (homeLetters.Percent >= 0.43m && awayLetters.Percent < 0.43m) { confidence = 0.6m; } if (homeLetters.Letter == "W") { return("Home (" + confidence * 100 + "%)"); } if (homeLetters.Letter == "L") { return("Away (" + confidence * 100 + "%)"); } if (homeLetters.Letter == "D") { return("Draw (" + confidence * 100 + "%)"); } } if (awayLetters.Percent > homeLetters.Percent) { var confidence = 0.4m; if (awayLetters.Percent >= 0.43m && homeLetters.Percent < 0.43m) { confidence = 0.6m; } if (awayLetters.Letter == "W") { return("Away (" + confidence * 100 + "%)"); } if (awayLetters.Letter == "L") { return("Home (" + confidence * 100 + "%)"); } if (awayLetters.Letter == "D") { return("Draw (" + confidence * 100 + "%)"); } } return("None"); }
public static ResultConfidence GetExpectedResultByLetters(Helper.LetterDistribution homeLetters, Helper.LetterDistribution awayLetters) { string winner; if (IsTheSameResult(homeLetters.Letter, awayLetters.Letter, out winner)) { if (homeLetters.Percent >= 0.43m && awayLetters.Percent >= 0.43m) { return(new ResultConfidence { Confidence = 1m, Winner = winner }); } if (homeLetters.Percent >= 0.43m || awayLetters.Percent >= 0.43m) { return(new ResultConfidence { Confidence = 0.8m, Winner = winner }); } return(new ResultConfidence { Confidence = 0.7m, Winner = winner }); } if (homeLetters.Percent > awayLetters.Percent) { var confidence = 0.4m; if (homeLetters.Percent >= 0.43m && awayLetters.Percent < 0.43m) { confidence = 0.6m; } if (homeLetters.Letter == "W") { return(new ResultConfidence { Confidence = confidence, Winner = "Home" }); } if (homeLetters.Letter == "L") { return(new ResultConfidence { Confidence = confidence, Winner = "Away" }); } if (homeLetters.Letter == "D") { return(new ResultConfidence { Confidence = confidence, Winner = "Draw" }); } } if (awayLetters.Percent > homeLetters.Percent) { var confidence = 0.4m; if (awayLetters.Percent >= 0.43m && homeLetters.Percent < 0.43m) { confidence = 0.6m; } if (awayLetters.Letter == "W") { return(new ResultConfidence { Confidence = confidence, Winner = "Away" }); } if (awayLetters.Letter == "L") { return(new ResultConfidence { Confidence = confidence, Winner = "Home" }); } if (awayLetters.Letter == "D") { return(new ResultConfidence { Confidence = confidence, Winner = "Draw" }); } } return(new ResultConfidence { Confidence = 0.2m, Winner = "Draw" }); }
public static string BuildSequenceStringExpectation(Helper.LetterDistribution relevant, string letterSeq) { return(relevant.Letter + " (" + Math.Round(relevant.Percent * 100, 2) + "%, Count: " + relevant.Count + " " + letterSeq + ")"); }