private static void RunMany(string hand, int players, int count) { var player = Player.FromStatsString(hand); var statsHand = new StatsHoleCards(player); var playerStats = PreflopOdds.RunMany(player, players, count); Console.WriteLine($"Hand {statsHand} won {playerStats[statsHand].WinRate:P} of the time in {count} rounds with {players} players"); }
private static void RunMany(int count) { var playerStats = PreflopOdds.RunMany(count); var bestPlayerStats = playerStats.Aggregate(BestWinRate); var bestPlayer = bestPlayerStats.Key; var bestStats = bestPlayerStats.Value; Console.WriteLine($"Best hole cards: {bestPlayer} with {bestStats.Wins} wins out of {bestStats.Attempts} ({bestStats.WinRate:P}) in {count} rounds"); }
private static void GeneratedOdds(Output output, int players) { var ranks = Enum.GetValues(typeof(Rank)); Array.Reverse(ranks); foreach (Rank rowRank in ranks) { output.Indent(); output.Tab(); foreach (Rank colRank in ranks) { // break the line and indent halfway through: if (colRank == Rank.Eight) { output.AppendLine(); output.Indent(); output.Tab(); } string statString; if (rowRank <= colRank) { statString = $"{colRank.Stringify()}{rowRank.Stringify()}o"; } else { statString = $"{rowRank.Stringify()}{colRank.Stringify()}s"; } var player = Player.FromStatsString(statString); var statsHand = new StatsHoleCards(player); var playerStats = PreflopOdds.RunMany(player, players, 25000); output.Append($@"{{Hand(""{statString}""), {playerStats[statsHand].WinRate:0.00}}}, "); } output.AppendLine(); output.Indent(-2); } }