예제 #1
0
        public GamblersWorldWith100DollarsToWin(int dollarsInHand, int stake)
        {
            _currentState = new GamblersWorldState(dollarsInHand);
            _action       = new GamblersWorldAction(stake);

            _world = new GamblersWorld(ProbabilityOfHeads, 100);
        }
예제 #2
0
        public void Has_states_equal_to_dollars_to_win_plus_one(
            [Range(1, 100)] int dollarsToWin)
        {
            const double probabilityOfHeads = 0.4;

            var world = new GamblersWorld(probabilityOfHeads, dollarsToWin);

            Assert.AreEqual(dollarsToWin + 1, world.AllStates().Count());
        }
예제 #3
0
        public void Number_of_possible_actions(int dollarsToWin, int dollarsInHand, int numPossibleActions)
        {
            const double probabilityOfHeads = 0.4;

            var world = new GamblersWorld(probabilityOfHeads, dollarsToWin);

            var actualNumberOfActions = world
                                        .AvailableActions(new GamblersWorldState(dollarsInHand))
                                        .Count();

            Assert.AreEqual(numPossibleActions, actualNumberOfActions,
                            $"expected {numPossibleActions} possible actions when ${dollarsToWin} to win, " +
                            $"and ${dollarsInHand} in hand. Got {actualNumberOfActions}");
        }
예제 #4
0
        public void Evaluates_to_same_values_as_gamblers_value_table()
        {
            const double probabilityOfHeads = 0.4;
            const int    dollarsToWin       = 100;

            var gamblersWorld = new GamblersWorld(probabilityOfHeads, dollarsToWin);
            var rewarder      = new GamblersWorldRewarder(gamblersWorld);
            var policy        = new UniformRandomGamblersPolicy();

            var gamblersValues = new GamblersValueTable(gamblersWorld);
            var genericValues  = new ValueTable <GamblersWorldState, GamblersWorldAction>(gamblersWorld);

            gamblersValues.Evaluate(policy, rewarder);
            genericValues.Evaluate(policy, rewarder);

            Assert.That(() => AllValuesAreEqual(gamblersWorld, genericValues, gamblersValues));
        }