commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pste...@apache.org
Subject svn commit: r1421968 - in /commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random: EmpiricalDistribution.java ValueServer.java
Date Fri, 14 Dec 2012 16:28:25 GMT
Author: psteitz
Date: Fri Dec 14 16:28:23 2012
New Revision: 1421968

URL: http://svn.apache.org/viewvc?rev=1421968&view=rev
Log:
Reverted incompatible changes made in r1420006.
Fixed javadoc error in EmpiricalDistribution class javadoc.
Deprecated constructors taking RandomDataImpl instances in EmpiricalDistribution, ValueServer.
 These constructors predate RandomGenerator, which should be used directly as the source of
random data for these classes.

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/EmpiricalDistribution.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/ValueServer.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/EmpiricalDistribution.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/EmpiricalDistribution.java?rev=1421968&r1=1421967&r2=1421968&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/EmpiricalDistribution.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/EmpiricalDistribution.java
Fri Dec 14 16:28:23 2012
@@ -29,8 +29,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.math3.distribution.AbstractRealDistribution;
-import org.apache.commons.math3.distribution.RealDistribution;
 import org.apache.commons.math3.distribution.NormalDistribution;
+import org.apache.commons.math3.distribution.RealDistribution;
 import org.apache.commons.math3.exception.MathIllegalStateException;
 import org.apache.commons.math3.exception.MathInternalError;
 import org.apache.commons.math3.exception.NullArgumentException;
@@ -134,18 +134,14 @@ public class EmpiricalDistribution exten
     /** upper bounds of subintervals in (0,1) "belonging" to the bins */
     private double[] upperBounds = null;
 
-    /** Data generator. */
-    private final RandomDataGenerator randomDataGen;
-    /**
-     * XXX Enable backward-compatibility (to be removed in 4.0).
-     */
-    private final boolean useRandomDataImpl;
+    /** RandomDataImpl instance to use in repeated calls to getNext() */
+    private final RandomDataImpl randomData;
 
     /**
      * Creates a new EmpiricalDistribution with the default bin count.
      */
     public EmpiricalDistribution() {
-        this(DEFAULT_BIN_COUNT);
+        this(DEFAULT_BIN_COUNT, new RandomDataImpl());
     }
 
     /**
@@ -154,7 +150,7 @@ public class EmpiricalDistribution exten
      * @param binCount number of bins
      */
     public EmpiricalDistribution(int binCount) {
-        this(binCount, (RandomGenerator) null);
+        this(binCount, new RandomDataImpl());
     }
 
     /**
@@ -162,82 +158,52 @@ public class EmpiricalDistribution exten
      * provided {@link RandomGenerator} as the source of random data.
      *
      * @param binCount number of bins
-     * @param randomData random data generator (may be null, resulting in a default generator)
-     * @deprecated As of 3.1. To be removed in 4.0. Please use
-     * {@link #EmpiricalDistribution(int,RandomDataGenerator)} instead.
+     * @param generator random data generator (may be null, resulting in default JDK generator)
+     * @since 3.0
      */
-    @Deprecated
-    public EmpiricalDistribution(int binCount, RandomDataImpl randomData) {
+    public EmpiricalDistribution(int binCount, RandomGenerator generator) {
         this.binCount = binCount;
-        this.randomData = randomData == null ?
-            new RandomDataImpl() :
-            randomData;
+        randomData = new RandomDataImpl(generator);
         binStats = new ArrayList<SummaryStatistics>();
-        useRandomDataImpl = true;
-        randomDataGen = null;
-    }
-    /**
-     * Creates a new EmpiricalDistribution with the specified bin count using the
-     * provided {@link RandomGenerator} as the source of random data.
-     *
-     * @param randomData random data generator (may be null, resulting in a default generator)
-     * @deprecated As of 3.1. To be removed in 4.0. Please use
-     * {@link #EmpiricalDistribution(RandomDataGenerator)} instead.
-     */
-    @Deprecated
-    public EmpiricalDistribution(RandomDataImpl randomData) {
-        this(DEFAULT_BIN_COUNT, randomData);
     }
 
     /**
-     * Creates a new EmpiricalDistribution with the specified bin count using the
-     * provided {@link RandomGenerator} as the source of random data.
-     *
-     * @param binCount number of bins
-     * @param randomData random data generator (may be null, resulting in a default generator)
-     */
-    public EmpiricalDistribution(int binCount, RandomDataGenerator randomData) {
-        this.binCount = binCount;
-        this.randomDataGen = randomData == null ?
-            new RandomDataGenerator() :
-            randomData;
-        binStats = new ArrayList<SummaryStatistics>();
-        useRandomDataImpl = false; // XXX Remove in 4.0
-    }
-    /**
-     * Creates a new EmpiricalDistribution with the specified bin count using the
+     * Creates a new EmpiricalDistribution with default bin count using the
      * provided {@link RandomGenerator} as the source of random data.
      *
-     * @param randomData random data generator (may be null, resulting in a default generator)
+     * @param generator random data generator (may be null, resulting in default JDK generator)
+     * @since 3.0
      */
-    public EmpiricalDistribution(RandomDataGenerator randomData) {
-        this(DEFAULT_BIN_COUNT, randomData);
+    public EmpiricalDistribution(RandomGenerator generator) {
+        this(DEFAULT_BIN_COUNT, generator);
     }
 
     /**
      * Creates a new EmpiricalDistribution with the specified bin count using the
-     * provided {@link RandomGenerator} as the source of random data.
+     * provided {@link RandomDataImpl} instance as the source of random data.
      *
      * @param binCount number of bins
-     * @param generator random data generator (may be null, resulting in a default generator)
+     * @param randomData random data generator (may be null, resulting in default JDK generator)
      * @since 3.0
      */
-    public EmpiricalDistribution(int binCount, RandomGenerator generator) {
-        this(binCount, new RandomDataGenerator(generator));
+    public EmpiricalDistribution(int binCount, RandomDataImpl randomData) {
+        this.binCount = binCount;
+        this.randomData = randomData;
+        binStats = new ArrayList<SummaryStatistics>();
     }
 
     /**
      * Creates a new EmpiricalDistribution with default bin count using the
-     * provided {@link RandomGenerator} as the source of random data.
+     * provided {@link RandomDataImpl} as the source of random data.
      *
-     * @param generator random data generator (may be null, resulting in default generator)
+     * @param randomData random data generator (may be null, resulting in default JDK generator)
      * @since 3.0
      */
-    public EmpiricalDistribution(RandomGenerator generator) {
-        this(DEFAULT_BIN_COUNT, generator);
+    public EmpiricalDistribution(RandomDataImpl randomData) {
+        this(DEFAULT_BIN_COUNT, randomData);
     }
 
-    /**
+     /**
      * Computes the empirical distribution from the provided
      * array of numbers.
      *
@@ -288,7 +254,7 @@ public class EmpiricalDistribution exten
         } finally {
            try {
                in.close();
-           } catch (IOException ex) { // NOPMD
+           } catch (IOException ex) {
                // ignore
            }
         }
@@ -320,7 +286,7 @@ public class EmpiricalDistribution exten
         } finally {
             try {
                 in.close();
-            } catch (IOException ex) { // NOPMD
+            } catch (IOException ex) {
                 // ignore
             }
         }
@@ -497,41 +463,22 @@ public class EmpiricalDistribution exten
             throw new MathIllegalStateException(LocalizedFormats.DISTRIBUTION_NOT_LOADED);
         }
 
-        if (useRandomDataImpl) {
-            // XXX backward compatibility.
-            // Start with a uniformly distributed random number in (0, 1)
-            final double x = randomData.nextUniform(0,1);
-            // Use this to select the bin and generate a Gaussian within the bin
-            for (int i = 0; i < binCount; i++) {
-                if (x <= upperBounds[i]) {
-                    SummaryStatistics stats = binStats.get(i);
-                    if (stats.getN() > 0) {
-                        if (stats.getStandardDeviation() > 0) {  // more than one obs
-                            return randomData.nextGaussian(stats.getMean(),
-                                                           stats.getStandardDeviation());
-                        } else {
-                            return stats.getMean(); // only one obs in bin
-                        }
-                    }
-                }
-            }
-        } else {
-            // Start with a uniformly distributed random number in (0, 1)
-            final double x = randomDataGen.nextUniform(0, 1);
-            // Use this to select the bin and generate a Gaussian within the bin
-            for (int i = 0; i < binCount; i++) {
-                if (x <= upperBounds[i]) {
-                    SummaryStatistics stats = binStats.get(i);
-                    if (stats.getN() > 0) {
-                        if (stats.getStandardDeviation() > 0) {  // more than one obs
-                            return randomDataGen.nextGaussian(stats.getMean(),
-                                                              stats.getStandardDeviation());
-                        } else {
-                            return stats.getMean(); // only one obs in bin
-                        }
-                    }
-                }
-            }
+        // Start with a uniformly distributed random number in (0,1)
+        final double x = randomData.nextUniform(0,1);
+
+        // Use this to select the bin and generate a Gaussian within the bin
+        for (int i = 0; i < binCount; i++) {
+           if (x <= upperBounds[i]) {
+               SummaryStatistics stats = binStats.get(i);
+               if (stats.getN() > 0) {
+                   if (stats.getStandardDeviation() > 0) {  // more than one obs
+                       return randomData.nextGaussian(stats.getMean(),
+                                                      stats.getStandardDeviation());
+                   } else {
+                       return stats.getMean(); // only one obs in bin
+                   }
+               }
+           }
         }
         throw new MathIllegalStateException(LocalizedFormats.NO_BIN_SELECTED);
     }
@@ -624,12 +571,7 @@ public class EmpiricalDistribution exten
      * @since 3.0
      */
     public void reSeed(long seed) {
-        if (useRandomDataImpl) {
-            // XXX backward compatibility.
-            randomData.reSeed(seed);
-        } else {
-            randomDataGen.reSeed(seed);
-        }
+        randomData.reSeed(seed);
     }
 
     // Distribution methods ---------------------------
@@ -819,7 +761,7 @@ public class EmpiricalDistribution exten
      */
     @Override
     public void reseedRandomGenerator(long seed) {
-        reSeed(seed);
+        randomData.reSeed(seed);
     }
 
     /**

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/ValueServer.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/ValueServer.java?rev=1421968&r1=1421967&r2=1421968&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/ValueServer.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/random/ValueServer.java
Fri Dec 14 16:28:23 2012
@@ -88,35 +88,36 @@ public class ValueServer {
     private BufferedReader filePointer = null;
 
     /** RandomDataImpl to use for random data generation. */
-    private final RandomDataGenerator randomData;
+    private final RandomDataImpl randomData;
 
     // Data generation modes ======================================
 
     /** Creates new ValueServer */
     public ValueServer() {
-        randomData = new RandomDataGenerator();
+        randomData = new RandomDataImpl();
     }
 
     /**
-     * Construct a ValueServer instance using a RandomDataGenerator as its source
+     * Construct a ValueServer instance using a RandomDataImpl as its source
      * of random data.
      *
-     * @param randomData random data source
+     * @param randomData the RandomDataImpl instance used to source random data
      * @since 3.0
+     * @deprecated use {@link #ValueServer(RandomGenerator)}
      */
-    public ValueServer(RandomDataGenerator randomData) {
+    public ValueServer(RandomDataImpl randomData) {
         this.randomData = randomData;
     }
+
     /**
-     * Construct a ValueServer instance using a RandomDataImpl as its source
+     * Construct a ValueServer instance using a RandomGenerator as its source
      * of random data.
      *
-     * @param randomData random data source
-     * @deprecated As of 3.1. Use {@link #ValueServer(RandomDataGenerator)} instead.
+     * @since 3.1
+     * @param generator source of random data
      */
-    @Deprecated
-    public ValueServer(RandomDataImpl randomData) {
-        this(randomData.getDelegate());
+    public ValueServer(RandomGenerator generator) {
+        this.randomData = new RandomDataImpl(generator);
     }
 
     /**
@@ -288,7 +289,7 @@ public class ValueServer {
             try {
                 filePointer.close();
                 filePointer = null;
-            } catch (IOException ex) { // NOPMD
+            } catch (IOException ex) {
                 // ignore
             }
         }



Mime
View raw message