示例#1
0
        public WealthStatistics(Configuration configuration)
        {
            InitialWealth = configuration.SimulationParameters.InitialWealth;
            ConsumptionRate = configuration.SimulationParameters.ConsumptionRate;
            AggregatedHandsCount = configuration.SimulationParameters.AggregStatsHandCount;

            WealthValue = InitialWealth;
        }
示例#2
0
        public Statistics(Configuration configuration)
        {
            AggregatedHandsCount = configuration.SimulationParameters.AggregStatsHandCount;

            TotalBetStatistics = new BetStatistics();
            TotalAggregatedStatistics = new AggregatedStatistics(AggregatedHandsCount);
            WealthStatistics = new WealthStatistics(configuration);
            TrueCountStatistics = new List<TrueCountBetStatsBit>();
        }
示例#3
0
        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;
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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);
        }
示例#6
0
        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;
            }
        }
示例#7
0
        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;
            }
        }
示例#8
0
文件: Count.cs 项目: buntom/Blackjack
 public Count(Configuration configuration)
 {
     CountSystem = configuration.SimulationParameters.CountSystem;
 }
示例#9
0
        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);
        }
示例#10
0
 public Runner(string configurationPath)
 {
     Configuration = XmlUtils.DeserializeFromFile<Configuration>(configurationPath);
 }