commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From er...@apache.org
Subject svn commit: r1508860 - /commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/RandomDataGenerator.java
Date Wed, 31 Jul 2013 14:00:51 GMT
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} */



Mime
View raw message