Author: tn
Date: Sun Mar 10 21:34:20 2013
New Revision: 1454925

URL: http://svn.apache.org/r1454925
Log:
[MATH-942] Add sample(int, T[]) method, add missing since tags.

Modified:
    
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteDistribution.java
    
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteIntegerDistribution.java
    
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteRealDistribution.java

Modified: 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteDistribution.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteDistribution.java?rev=1454925&r1=1454924&r2=1454925&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteDistribution.java
 (original)
+++ 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteDistribution.java
 Sun Mar 10 21:34:20 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.commons.math3.distribution;
 
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -23,6 +24,7 @@ import org.apache.commons.math3.exceptio
 import org.apache.commons.math3.exception.MathIllegalArgumentException;
 import org.apache.commons.math3.exception.NotPositiveException;
 import org.apache.commons.math3.exception.NotStrictlyPositiveException;
+import org.apache.commons.math3.exception.NullArgumentException;
 import org.apache.commons.math3.exception.util.LocalizedFormats;
 import org.apache.commons.math3.random.RandomGenerator;
 import org.apache.commons.math3.random.Well19937c;
@@ -35,7 +37,8 @@ import org.apache.commons.math3.util.Pai
  * @param <T> type of the random variable.
  * @see <a 
href="http://en.wikipedia.org/wiki/Probability_distribution#Discrete_probability_distribution";>Discrete
 probability distribution (Wikipedia)</a>
  * @see <a 
href="http://mathworld.wolfram.com/DiscreteDistribution.html";>Discrete 
Distribution (MathWorld)</a>
- * @version $Id: DiscreteDistribution.java 169 2013-03-08 09:02:38Z wydrych $
+ * @version $Id$
+ * @since 3.2
  */
 public class DiscreteDistribution<T> {
 
@@ -194,4 +197,43 @@ public class DiscreteDistribution<T> {
 
     }
 
+    /**
+     * Generate a random sample from the distribution.
+     * <p>
+     * If the requested samples fit in the specified array, it is returned
+     * therein. Otherwise, a new array is allocated with the runtime type of
+     * the specified array and the size of this collection.
+     *
+     * @param sampleSize the number of random values to generate.
+     * @param array the array to populate.
+     * @return an array representing the random sample.
+     * @throws NotStrictlyPositiveException if {@code sampleSize} is not 
positive.
+     * @throws NullArgumentException if {@code array} is null
+     */
+    public T[] sample(int sampleSize, final T[] array) throws 
NotStrictlyPositiveException {
+        if (sampleSize <= 0) {
+            throw new 
NotStrictlyPositiveException(LocalizedFormats.NUMBER_OF_SAMPLES, sampleSize);
+        }
+
+        if (array == null) {
+            throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
+        }
+
+        T[] out;
+        if (array.length < sampleSize) {
+            @SuppressWarnings("unchecked") // safe as both are of type T
+            final T[] unchecked = (T[]) 
Array.newInstance(array.getClass().getComponentType(), sampleSize);
+            out = unchecked;
+        } else {
+            out = array;
+        }
+
+        for (int i = 0; i < sampleSize; i++) {
+            out[i] = sample();
+        }
+
+        return out;
+
+    }
+
 }

Modified: 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteIntegerDistribution.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteIntegerDistribution.java?rev=1454925&r1=1454924&r2=1454925&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteIntegerDistribution.java
 (original)
+++ 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteIntegerDistribution.java
 Sun Mar 10 21:34:20 2013
@@ -34,7 +34,8 @@ import org.apache.commons.math3.util.Pai
  *
  * @see <a 
href="http://en.wikipedia.org/wiki/Probability_distribution#Discrete_probability_distribution";>Discrete
 probability distribution (Wikipedia)</a>
  * @see <a 
href="http://mathworld.wolfram.com/DiscreteDistribution.html";>Discrete 
Distribution (MathWorld)</a>
- * @version $Id: DiscreteIntegerDistribution.java 169 2013-03-08 09:02:38Z 
wydrych $
+ * @version $Id$
+ * @since 3.2
  */
 public class DiscreteIntegerDistribution extends AbstractIntegerDistribution {
 

Modified: 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteRealDistribution.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteRealDistribution.java?rev=1454925&r1=1454924&r2=1454925&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteRealDistribution.java
 (original)
+++ 
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/distribution/DiscreteRealDistribution.java
 Sun Mar 10 21:34:20 2013
@@ -34,7 +34,8 @@ import org.apache.commons.math3.util.Pai
  *
  * @see <a 
href="http://en.wikipedia.org/wiki/Probability_distribution#Discrete_probability_distribution";>Discrete
 probability distribution (Wikipedia)</a>
  * @see <a 
href="http://mathworld.wolfram.com/DiscreteDistribution.html";>Discrete 
Distribution (MathWorld)</a>
- * @version $Id: DiscreteRealDistribution.java 169 2013-03-08 09:02:38Z 
wydrych $
+ * @version $Id$
+ * @since 3.2
  */
 public class DiscreteRealDistribution extends AbstractRealDistribution {
 


Reply via email to