コード例 #1
0
        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;
        }
コード例 #2
0
        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"
            });
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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"
            });
        }
コード例 #5
0
 public static string BuildSequenceStringExpectation(Helper.LetterDistribution relevant, string letterSeq)
 {
     return(relevant.Letter + " (" + Math.Round(relevant.Percent * 100, 2) + "%, Count: " + relevant.Count + " " + letterSeq + ")");
 }