Author: erans
Date: Wed Jul 31 14:00:50 2013
New Revision: 1508860
URL: http://svn.apache.org/r1508860
Log:
MATH-1011
Delegate method "nextInt" in "RandomDataGenerator" to method "sample" in
"UniformIntegerDistribution".
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/RandomDataGenerator.java
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/RandomDataGenerator.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/RandomDataGenerator.java?rev=1508860&r1=1508859&r2=1508860&view=diff
==============================================================================
---
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/RandomDataGenerator.java
(original)
+++
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/RandomDataGenerator.java
Wed Jul 31 14:00:50 2013
@@ -37,6 +37,7 @@ import org.apache.commons.math3.distribu
import org.apache.commons.math3.distribution.TDistribution;
import org.apache.commons.math3.distribution.WeibullDistribution;
import org.apache.commons.math3.distribution.ZipfDistribution;
+import org.apache.commons.math3.distribution.UniformIntegerDistribution;
import org.apache.commons.math3.exception.MathInternalError;
import org.apache.commons.math3.exception.NotANumberException;
import org.apache.commons.math3.exception.NotFiniteNumberException;
@@ -194,25 +195,7 @@ public class RandomDataGenerator impleme
/** {@inheritDoc} */
public int nextInt(final int lower, final int upper) throws
NumberIsTooLargeException {
- if (lower >= upper) {
- throw new
NumberIsTooLargeException(LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
- lower, upper, false);
- }
- final int max = (upper - lower) + 1;
- if (max <= 0) {
- // the range is too wide to fit in a positive int (larger than
2^31); as it covers
- // more than half the integer range, we use directly a simple
rejection method
- final RandomGenerator rng = getRandomGenerator();
- while (true) {
- final int r = rng.nextInt();
- if (r >= lower && r <= upper) {
- return r;
- }
- }
- } else {
- // we can shift the range and generate directly a positive int
- return lower + getRandomGenerator().nextInt(max);
- }
+ return new UniformIntegerDistribution(getRandomGenerator(), lower,
upper).sample();
}
/** {@inheritDoc} */