public WealthStatistics(Configuration configuration) { InitialWealth = configuration.SimulationParameters.InitialWealth; ConsumptionRate = configuration.SimulationParameters.ConsumptionRate; AggregatedHandsCount = configuration.SimulationParameters.AggregStatsHandCount; WealthValue = InitialWealth; }
public Statistics(Configuration configuration) { AggregatedHandsCount = configuration.SimulationParameters.AggregStatsHandCount; TotalBetStatistics = new BetStatistics(); TotalAggregatedStatistics = new AggregatedStatistics(AggregatedHandsCount); WealthStatistics = new WealthStatistics(configuration); TrueCountStatistics = new List<TrueCountBetStatsBit>(); }
public Permits(Hand handPlayer, Configuration configuration, int numberOfSplits) { bool splitDone = numberOfSplits > 0; if (splitDone) { Double = configuration.GameRules.DoubleAfterSplit && handPlayer.CardsHeldCount() == 2; } else { Double = handPlayer.CardsHeldCount() == 2; } Split = numberOfSplits < configuration.GameRules.MaxNumberOfSplits && handPlayer.CardsHeldCount() == 2 && handPlayer.IsPair(); Surrender = configuration.GameRules.SurrenderAllowed && handPlayer.CardsHeldCount() == 2 && !splitDone; }
public ResultsUtils(Configuration configuration) { var simulationParameters = configuration.SimulationParameters; OutputFolder = simulationParameters.OutputFolderSpecific; Directory.CreateDirectory(OutputFolder); if (simulationParameters.SaveFullResults) { ResultsWriter = InitiateResultsLog(OutputFolder, "BlackjackSim_Results.csv"); ResultsWriter.WriteLine(BetHandResult.GetHeader()); } var aggregatedHandsCount = simulationParameters.AggregStatsHandCount; Statistics = new Statistics(configuration); if (simulationParameters.SaveAggregatedData) { AggregatedDataWriter = InitiateResultsLog(OutputFolder, "BlackjackSim_AggregatedHandsData.csv"); Statistics.TotalAggregatedStatistics.LogHeader(AggregatedDataWriter); } }
public static void CreateAndSaveSampleConfiguration() { var sampleConfiguration = new Configuration { GameRules = new GameRules { DoubleAfterSplit = true, MaxNumberOfSplits = 10 }, SimulationParameters = new SimulationParameters { UnitBetSizeBase = 5, InitialWealth = 10000, BetSizeTrueCountScale = new List<TrueCountBet> { new TrueCountBet { BetRatio = 0.2, TrueCount = 10 }, new TrueCountBet { BetRatio = 0.1, TrueCount = 20 }, new TrueCountBet { BetRatio = 0.3, TrueCount = 30 } } } }; var fileName = @"B:\sampleConfiguration.xml"; XmlUtils.SerializeToFile<Configuration>(sampleConfiguration, fileName); }
public Simulator(Configuration configuration) { var simulationParameters = configuration.SimulationParameters; Random = simulationParameters.UseCustomSeed ? new Random(simulationParameters.CustomSeed) : new Random(); Configuration = configuration; if (!Configuration.IsValid()) { throw new Exception("Invalid configuration given!"); } switch (simulationParameters.StrategyType) { case StrategyType.BASIC: Strategy = new BasicStrategy(configuration); break; case StrategyType.INDEX: Strategy = new IndexStrategy(configuration); break; } }
public CardShoe(Configuration configuration, Random random) { Random = random; int totalPacksCount = configuration.SimulationParameters.TotalPacksCount; if (totalPacksCount > 0) { OrderedCards = GetOrderedCards(totalPacksCount); InitiateCards(); TotalPacksCount = totalPacksCount; LeftPacksCount = (double)totalPacksCount; Penetration = 0; Count = new Count(configuration); } else { Cards = null; TotalPacksCount = -1; LeftPacksCount = -1; Penetration = -1; Count = null; } }
public Count(Configuration configuration) { CountSystem = configuration.SimulationParameters.CountSystem; }
public static void CreateShoe() { var sampleConfiguration = new Configuration { GameRules = new GameRules { DoubleAfterSplit = true, MaxNumberOfSplits = 10 }, SimulationParameters = new SimulationParameters { UnitBetSizeBase = 5, TotalPacksCount = 4, InitialWealth = 10000, BetSizeTrueCountScale = new List<TrueCountBet> { new TrueCountBet { BetRatio = 0.2, TrueCount = 10 }, new TrueCountBet { BetRatio = 0.1, TrueCount = 20 }, new TrueCountBet { BetRatio = 0.3, TrueCount = 30 } }, CountSystem = new List<CountSystemBit> { new CountSystemBit { Card = 1, Count = -1 }, new CountSystemBit { Card = 2, Count = 1 }, new CountSystemBit { Card = 3, Count = 1 }, new CountSystemBit { Card = 4, Count = 1 }, new CountSystemBit { Card = 5, Count = 1 }, new CountSystemBit { Card = 6, Count = 1 }, new CountSystemBit { Card = 7, Count = 0 }, new CountSystemBit { Card = 8, Count = 0 }, new CountSystemBit { Card = 9, Count = 0 }, new CountSystemBit { Card = 10, Count = -1 }, new CountSystemBit { Card = 11, Count = 1 }, new CountSystemBit { Card = 12, Count = 1 }, new CountSystemBit { Card = 13, Count = 1 } } } }; CardShoe shoe = new CardShoe(sampleConfiguration, new Random()); var cards = shoe.DealCard(2); }
public Runner(string configurationPath) { Configuration = XmlUtils.DeserializeFromFile<Configuration>(configurationPath); }