public IReadOnlyList <Tuple <string, int?> > GenerateMeanPredictionsAndWinners(int tourId) { var fetchStrategies = new IFetchStrategy <Tour>[] { new FetchMatchesWithPredictions() }; var tour = _context.GetTours(fetchStrategies).AsNoTracking().Single(t => t.TourId == tourId); var matches = tour.Matches; var scoresAndWinners = new List <Tuple <string, int?> >(); foreach (var match in matches) { var predictionValues = match.Predictions.Select(p => p.Value); var winners = match.Predictions.Select(p => p.PlayoffWinner); var meanScore = CalculateMeanScore(predictionValues); var meanWinner = CalculateMeanPlayoffWinner(winners); if (PredictionEvaluator.GetDifference(meanScore) != 0) { meanWinner = null; } else if (meanWinner == null) { meanWinner = 1; } scoresAndWinners.Add(new Tuple <string, int?>(meanScore, meanWinner)); } return(scoresAndWinners); }
//mb needs IPredictionEvaluator private void SubmitPrediction(Prediction prediction, bool isPlayoff) { var guessedWinner = prediction.PlayoffWinner; var actualWinner = prediction.Match.PlayoffWinner; var predictionResults = PredictionEvaluator.GetPredictionResults(prediction.Value, prediction.Match.Score, isPlayoff, guessedWinner, actualWinner); prediction.Sum = predictionResults.Sum; prediction.Score = predictionResults.Score; prediction.Difference = predictionResults.Difference; prediction.Outcome = predictionResults.Outcome; prediction.Expert.Sum += predictionResults.Sum; if (predictionResults.Score) { prediction.Expert.Scores++; } else if (predictionResults.Difference) { prediction.Expert.Differences++; } else if (predictionResults.Outcome) { prediction.Expert.Outcomes++; } prediction.IsClosed = true; }
public IReadOnlyList <string> GenerateMeanPredictions(int tourId) { var fetchStrategies = new IFetchStrategy <Tour>[] { new FetchMatchesWithPredictions() }; var tour = _context.GetTours(fetchStrategies).AsNoTracking().Single(t => t.TourId == tourId); var matches = tour.Matches; var scores = new List <string>(); foreach (var match in matches) { var homeSum = 0; var awaySum = 0; var matchNumber = matches.Count; foreach (var prediction in match.Predictions) { homeSum += PredictionEvaluator.GetHomeGoals(prediction.Value); awaySum += PredictionEvaluator.GetAwayGoals(prediction.Value); } var homeMean = homeSum / matchNumber; var awayMean = awaySum / matchNumber; scores.Add(homeMean + ":" + awayMean); } return(scores); }
public IReadOnlyList <Tuple <string, int?> > GenerateRandomizerPredictionsAndWinners(int matchNumber) { var scoresWithWinners = new List <Tuple <string, int?> >(); var r = new Random(); for (var i = 1; i <= matchNumber; i++) { var score = r.Next(0, 4).ToString() + ":" + r.Next(0, 4).ToString(); int?winner = null; if (PredictionEvaluator.GetDifference(score) == 0) { winner = r.Next(1, 3); } scoresWithWinners.Add(new Tuple <string, int?>(score, winner)); } return(scoresWithWinners); }
public string CalculateMeanScore(IEnumerable <string> scores) { var homeSum = 0; var awaySum = 0; var scoreList = scores.ToList(); foreach (var score in scoreList) { if (!PredictionEvaluator.IsValidScore(score)) { throw new ArgumentException("Not a valid score"); } homeSum += PredictionEvaluator.GetHomeGoals(score); awaySum += PredictionEvaluator.GetAwayGoals(score); } var homeMean = homeSum / scoreList.Count; var awayMean = awaySum / scoreList.Count; return(homeMean + ":" + awayMean); }
public static string GetMeanScore(this IEnumerable <string> scores) { var homeSum = 0; var awaySum = 0; var scoreList = scores.ToList(); foreach (var score in scoreList) { if (!PredictionEvaluator.IsValidScore(score)) { throw new ArgumentException("Not a valid score"); } homeSum += PredictionEvaluator.GetHomeGoals(score); awaySum += PredictionEvaluator.GetAwayGoals(score); } var homeMean = (double)homeSum / scoreList.Count; var awayMean = (double)awaySum / scoreList.Count; return(Math.Round(homeMean) + ":" + Math.Round(awayMean)); }