public GamblersWorldWith100DollarsToWin(int dollarsInHand, int stake) { _currentState = new GamblersWorldState(dollarsInHand); _action = new GamblersWorldAction(stake); _world = new GamblersWorld(ProbabilityOfHeads, 100); }
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()); }
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}"); }
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)); }