public void TestGetExpectedValueOfRerollingDice(int numDice, int numSides, double expectedExpectedValue) { var diceRerollOptimizer = new DiceRerollOptimizer(); var actualExpectedValue = diceRerollOptimizer.GetExpectedValueOfRerollingDice(numDice, numSides) / numDice; Assert.LessOrEqual(Math.Abs(actualExpectedValue - expectedExpectedValue), epsilon); }
public void TestCalculateExpectedValueOfCurrentDiceRoll(int[] diceRoll, double expectedExpectedValue) { var diceRerollOptimizer = new DiceRerollOptimizer(); var memo = new Dictionary <int, double> { { 0, 0 }, { 1, 3.5 }, { 2, 4.11805556 } }; var actualExpectedValue = diceRerollOptimizer.CalculateExpectedValueOfCurrentDiceRoll(diceRoll.ToList(), diceRoll.Length, memo); Assert.LessOrEqual(Math.Abs(actualExpectedValue - expectedExpectedValue), epsilon); }