You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Ole Ersoy <ol...@gmail.com> on 2014/10/10 22:24:17 UTC
[Math] AbstractIntegerDistribution.inverseCumulativeDistribution
Unexpected Result
Hi,
I ran the following assertions on the dice distribution in the AbstractIntegerDistributionTest:
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(0.7d/6d)); //Expecting 1
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(0.8d/6d)); //Expecting 1
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(0.9d/6d)); //Expecting 1
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(1d/6d)); //Expecting 2
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(1.5d/6d)); //Expecting 2
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(2d/6d)); //Expecting 2
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(2.9d/6d)); //Expecting 3
Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability(3.0d/6d)); //Expecting 4
Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability(3.1d/6d));
Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability(3.2d/6d));
Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability(3.5d/6d));
Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability(4.0d/6d)); //Expecting 5
Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability(5.0d/6d)); //Expecting 5
Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability(5.1d/6d)); //Expecting 5
Assert.assertEquals(5, diceDistribution.inverseCumulativeProbability(5.5d/6d));
Assert.assertEquals(6, diceDistribution.inverseCumulativeProbability(6.0d/6d));
All of them pass. Thoughts?
Cheers,
- Ole
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: [Math] AbstractIntegerDistribution.inverseCumulativeDistribution
Unexpected Result
Posted by Ole Ersoy <ol...@gmail.com>.
> 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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: [Math] AbstractIntegerDistribution.inverseCumulativeDistribution
Unexpected Result
Posted by Ole Ersoy <ol...@gmail.com>.
> 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.
Thanks Thomas! Do you want me to send a pull request with updates to the test?
Cheers,
- Ole
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: [Math] AbstractIntegerDistribution.inverseCumulativeDistribution
Unexpected Result
Posted by Thomas Neidhart <th...@gmail.com>.
On 10/10/2014 10:24 PM, Ole Ersoy wrote:
> Hi,
>
> I ran the following assertions on the dice distribution in the
> AbstractIntegerDistributionTest:
>
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(0.7d/6d)); //Expecting 1
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(0.8d/6d)); //Expecting 1
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(0.9d/6d)); //Expecting 1
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(1d/6d)); //Expecting 2
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(1.5d/6d)); //Expecting 2
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(2d/6d)); //Expecting 2
>
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(2.9d/6d)); //Expecting 3
> Assert.assertEquals(3,
> diceDistribution.inverseCumulativeProbability(3.0d/6d)); //Expecting 4
> Assert.assertEquals(4,
> diceDistribution.inverseCumulativeProbability(3.1d/6d));
>
> Assert.assertEquals(4,
> diceDistribution.inverseCumulativeProbability(3.2d/6d));
> Assert.assertEquals(4,
> diceDistribution.inverseCumulativeProbability(3.5d/6d));
>
> Assert.assertEquals(4,
> diceDistribution.inverseCumulativeProbability(4.0d/6d)); //Expecting 5
> Assert.assertEquals(4,
> diceDistribution.inverseCumulativeProbability(5.0d/6d)); //Expecting 5
> Assert.assertEquals(4,
> diceDistribution.inverseCumulativeProbability(5.1d/6d)); //Expecting 5
> Assert.assertEquals(5,
> diceDistribution.inverseCumulativeProbability(5.5d/6d));
> Assert.assertEquals(6,
> diceDistribution.inverseCumulativeProbability(6.0d/6d));
>
> All of them pass. Thoughts?
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.
Thomas
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org