The variance of the DiceDistribution is wrong.
Correct is the following: 2.91 or (70/24).
You can verify the correct results also with a
UniformIntegerDistribution(1, 6).
Obviously the wrong variance was not noticed as the tests in this class
do not compute the inverseCumulativeProbability.
I rewrote the tests and now they pass. Just wanted to share the precision
info. If I make it smaller the tests that use it fail.
double precision = 0.000000000000001;
Assert.assertEquals(1,
diceDistribution.inverseCumulativeProbability(0));
Assert.assertEquals(1,
diceDistribution.inverseCumulativeProbability((1d-Double.MIN_VALUE)/6d));
Assert.assertEquals(2,
diceDistribution.inverseCumulativeProbability((1d+precision)/6d));
Assert.assertEquals(2,
diceDistribution.inverseCumulativeProbability((2d-Double.MIN_VALUE)/6d));
Assert.assertEquals(3,
diceDistribution.inverseCumulativeProbability((2d+precision)/6d));
Assert.assertEquals(3,
diceDistribution.inverseCumulativeProbability((3d-Double.MIN_VALUE)/6d));
Assert.assertEquals(4,
diceDistribution.inverseCumulativeProbability((3d+precision)/6d));
Assert.assertEquals(4,
diceDistribution.inverseCumulativeProbability((4d-Double.MIN_VALUE)/6d));
Assert.assertEquals(5,
diceDistribution.inverseCumulativeProbability((4d+precision)/6d));
Assert.assertEquals(5,
diceDistribution.inverseCumulativeProbability((5d-precision)/6d));//Can't use
Double.MIN
Assert.assertEquals(6,
diceDistribution.inverseCumulativeProbability((5d+precision)/6d));
Assert.assertEquals(6,
diceDistribution.inverseCumulativeProbability((6d-precision)/6d));//Can't use
Double.MIN
Assert.assertEquals(6,
diceDistribution.inverseCumulativeProbability((6d)/6d));
Cheers,
- Ole
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org