RandomDataImpl.nextPoisson fails for means in range 6.0 - 19.99
---------------------------------------------------------------
Key: MATH-294
URL: https://issues.apache.org/jira/browse/MATH-294
Project: Commons Math
Issue Type: Bug
Affects Versions: 2.0, 1.2
Environment: Java 1.6 on mac osX
Reporter: Jason McFall
math.random.RandomDataImpl.nextPoisson(double mean) fails frequently (but not always) for
values of mean between 6.0 and 19.99 inclusive. For values below 6.0 (where I see there is
a branch in the logic) and above 20.0 it seems to be okay (though I've only randomly sampled
the space and run a million trials for the values I've tried)
When it fails, the exception is as follows (this for a mean of 6.0)
org.apache.commons.math.MathRuntimeException$4: must have n >= 0 for n!, got n = -2
at org.apache.commons.math.MathRuntimeException.createIllegalArgumentException(MathRuntimeException.java:282)
at org.apache.commons.math.util.MathUtils.factorialLog(MathUtils.java:561)
at org.apache.commons.math.random.RandomDataImpl.nextPoisson(RandomDataImpl.java:434)
ie MathUtils.factorialLog is being called with a negative input
To reproduce:
JDKRandomGenerator random = new JDKRandomGenerator();
random.setSeed(123456);
RandomData randomData = new RandomDataImpl(random);
for (int i=0; i< 1000000; i++){
randomData.nextPoisson(6.0);
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|