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

Reply via email to