Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/RandomSamplingAssistant.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/RandomSamplingAssistant.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/RandomSamplingAssistant.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/RandomSamplingAssistant.java Thu Sep 2 04:33:38 2010 @@ -11,6 +11,8 @@ package org.apache.mahout.math.jet.rando import org.apache.mahout.math.PersistentObject; import org.apache.mahout.math.jet.random.engine.RandomEngine; +import java.util.Random; + /** @deprecated until unit tests are in place. Until this time, this class/interface is unsupported. */ @Deprecated public class RandomSamplingAssistant extends PersistentObject { @@ -32,7 +34,7 @@ public class RandomSamplingAssistant ext * @param randomGenerator a random number generator. Set this parameter to <tt>null</tt> to use the default random * number generator. */ - public RandomSamplingAssistant(long n, long N, RandomEngine randomGenerator) { + public RandomSamplingAssistant(long n, long N, Random randomGenerator) { this.n = n; this.sampler = new RandomSampler(n, N, 0, randomGenerator); this.buffer = new long[(int) Math.min(n, MAX_BUFFER_SIZE)]; @@ -62,7 +64,7 @@ public class RandomSamplingAssistant ext } /** Returns the used random generator. */ - public RandomEngine getRandomGenerator() { + public Random getRandomGenerator() { return this.sampler.getRandomGenerator(); }
Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/WeightedRandomSampler.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/WeightedRandomSampler.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/WeightedRandomSampler.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/random/sampling/WeightedRandomSampler.java Thu Sep 2 04:33:38 2010 @@ -8,11 +8,14 @@ It is provided "as is" without expressed */ package org.apache.mahout.math.jet.random.sampling; +import org.apache.mahout.common.RandomUtils; import org.apache.mahout.math.PersistentObject; import org.apache.mahout.math.jet.random.Uniform; import org.apache.mahout.math.jet.random.engine.RandomEngine; import org.apache.mahout.math.list.IntArrayList; +import java.util.Random; + /** * Conveniently computes a stable subsequence of elements from a given input sequence; * Picks (samples) exactly one random element from successive blocks of <tt>weight</tt> input elements each. @@ -54,9 +57,9 @@ public class WeightedRandomSampler exten * @param randomGenerator a random number generator. Set this parameter to <tt>null</tt> to use the default random * number generator. */ - public WeightedRandomSampler(int weight, RandomEngine randomGenerator) { + public WeightedRandomSampler(int weight, Random randomGenerator) { if (randomGenerator == null) { - randomGenerator = org.apache.mahout.math.jet.random.AbstractDistribution.makeDefaultGenerator(); + randomGenerator = RandomUtils.getRandom(); } this.generator = new Uniform(randomGenerator); setWeight(weight); Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/KnownDoubleQuantileEstimator.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/KnownDoubleQuantileEstimator.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/KnownDoubleQuantileEstimator.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/KnownDoubleQuantileEstimator.java Thu Sep 2 04:33:38 2010 @@ -13,6 +13,8 @@ import org.apache.mahout.math.jet.random import org.apache.mahout.math.jet.random.sampling.RandomSamplingAssistant; import org.apache.mahout.math.list.DoubleArrayList; +import java.util.Random; + /** * Approximate quantile finding algorithm for known <tt>N</tt> requiring only one pass and little main memory; computes * quantiles over a sequence of <tt>double</tt> elements. @@ -58,7 +60,7 @@ class KnownDoubleQuantileEstimator exten * of 10 elements each. Etc. * @param generator a uniform random number generator. */ - KnownDoubleQuantileEstimator(int b, int k, long n, double samplingRate, RandomEngine generator) { + KnownDoubleQuantileEstimator(int b, int k, long n, double samplingRate, Random generator) { this.samplingRate = samplingRate; this.n = n; Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/QuantileFinderFactory.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/QuantileFinderFactory.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/QuantileFinderFactory.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/QuantileFinderFactory.java Thu Sep 2 04:33:38 2010 @@ -14,6 +14,8 @@ import org.apache.mahout.math.jet.math.A import org.apache.mahout.math.jet.random.engine.RandomEngine; import org.apache.mahout.math.list.DoubleArrayList; +import java.util.Random; + /** * Factory constructing exact and approximate quantile finders for both known and unknown <tt>N</tt>. * Also see {...@link hep.aida.bin.QuantileBin1D}, demonstrating how this package can be used. @@ -365,7 +367,7 @@ public class QuantileFinderFactory { * @return the quantile finder minimizing memory requirements under the given constraints. */ public static DoubleQuantileFinder newDoubleQuantileFinder(boolean knownN, long n, double epsilon, double delta, - int quantiles, RandomEngine generator) { + int quantiles, Random generator) { //boolean known_N = true; //if (N==Long.MAX_VALUE) known_N = false; // check parameters. Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/UnknownDoubleQuantileEstimator.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/UnknownDoubleQuantileEstimator.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/UnknownDoubleQuantileEstimator.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/jet/stat/quantile/UnknownDoubleQuantileEstimator.java Thu Sep 2 04:33:38 2010 @@ -32,6 +32,7 @@ import org.apache.mahout.math.jet.random import org.apache.mahout.math.list.DoubleArrayList; import java.util.Comparator; +import java.util.Random; /** * Approximate quantile finding algorithm for unknown <tt>N</tt> requiring only one pass and little main memory; @@ -75,7 +76,7 @@ class UnknownDoubleQuantileEstimator ext * shall be precomputed. * @param generator a uniform random number generator. */ - UnknownDoubleQuantileEstimator(int b, int k, int h, double precomputeEpsilon, RandomEngine generator) { + UnknownDoubleQuantileEstimator(int b, int k, int h, double precomputeEpsilon, Random generator) { this.sampler = new WeightedRandomSampler(1, generator); setUp(b, k); this.treeHeightStartingSampling = h; Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory1D.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory1D.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory1D.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory1D.java Thu Sep 2 04:33:38 2010 @@ -8,6 +8,7 @@ It is provided "as is" without expressed */ package org.apache.mahout.math.matrix; +import org.apache.mahout.common.RandomUtils; import org.apache.mahout.math.PersistentObject; import org.apache.mahout.math.function.Functions; import org.apache.mahout.math.jet.random.engine.MersenneTwister; @@ -169,8 +170,8 @@ public class DoubleFactory1D extends Per } RandomSamplingAssistant sampler = - new RandomSamplingAssistant(n, size, - new MersenneTwister()); + new RandomSamplingAssistant(n, size, RandomUtils.getRandom()); + for (int i = size; --i >= 0;) { if (sampler.sampleNextElement()) { matrix.set(i, value); Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory2D.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory2D.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory2D.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/DoubleFactory2D.java Thu Sep 2 04:33:38 2010 @@ -8,6 +8,7 @@ It is provided "as is" without expressed */ package org.apache.mahout.math.matrix; +import org.apache.mahout.common.RandomUtils; import org.apache.mahout.math.PersistentObject; import org.apache.mahout.math.function.Functions; import org.apache.mahout.math.jet.random.engine.MersenneTwister; @@ -720,8 +721,7 @@ public class DoubleFactory2D extends Per } RandomSamplingAssistant sampler = - new RandomSamplingAssistant(n, size, - new MersenneTwister()); + new RandomSamplingAssistant(n, size, RandomUtils.getRandom()); for (int i = 0; i < size; i++) { if (sampler.sampleNextElement()) { int row = i / columns; Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/doublealgo/Statistic.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/doublealgo/Statistic.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/doublealgo/Statistic.java (original) +++ mahout/trunk/math/src/main/java/org/apache/mahout/math/matrix/doublealgo/Statistic.java Thu Sep 2 04:33:38 2010 @@ -8,6 +8,7 @@ It is provided "as is" without expressed */ package org.apache.mahout.math.matrix.doublealgo; +import org.apache.mahout.common.RandomUtils; import org.apache.mahout.math.function.BinaryFunction; import org.apache.mahout.math.function.Functions; import org.apache.mahout.math.jet.random.engine.MersenneTwister; @@ -18,6 +19,8 @@ import org.apache.mahout.math.matrix.Dou import org.apache.mahout.math.matrix.DoubleMatrix3D; import org.apache.mahout.math.matrix.impl.DenseDoubleMatrix2D; +import java.util.Random; + /** @deprecated until unit tests are in place. Until this time, this class/interface is unsupported. */ @Deprecated public class Statistic { @@ -401,7 +404,7 @@ return result; * @throws IllegalArgumentException if <tt>! (0 <= rowFraction <= 1 && 0 <= columnFraction <= 1)</tt>. * @see org.apache.mahout.math.jet.random.sampling.RandomSampler */ - public static DoubleMatrix1D viewSample(DoubleMatrix1D matrix, double fraction, RandomEngine randomGenerator) { + public static DoubleMatrix1D viewSample(DoubleMatrix1D matrix, double fraction, Random randomGenerator) { // check preconditions and allow for a little tolerance double epsilon = 1.0e-09; if (fraction < 0 - epsilon || fraction > 1 + epsilon) { @@ -414,9 +417,8 @@ return result; fraction = 1; } - // random generator seeded with current time if (randomGenerator == null) { - randomGenerator = new MersenneTwister((int) System.currentTimeMillis()); + randomGenerator = RandomUtils.getRandom(); } int ncols = (int) Math.round(matrix.size() * fraction); @@ -466,7 +468,7 @@ return result; * @see org.apache.mahout.math.jet.random.sampling.RandomSampler */ public static DoubleMatrix2D viewSample(DoubleMatrix2D matrix, double rowFraction, double columnFraction, - RandomEngine randomGenerator) { + Random randomGenerator) { // check preconditions and allow for a little tolerance double epsilon = 1.0e-09; if (rowFraction < 0 - epsilon || rowFraction > 1 + epsilon) { @@ -491,7 +493,7 @@ return result; // random generator seeded with current time if (randomGenerator == null) { - randomGenerator = new MersenneTwister((int) System.currentTimeMillis()); + randomGenerator = RandomUtils.getRandom(); } int nrows = (int) Math.round(matrix.rows() * rowFraction); @@ -537,7 +539,7 @@ return result; * @see org.apache.mahout.math.jet.random.sampling.RandomSampler */ public static DoubleMatrix3D viewSample(DoubleMatrix3D matrix, double sliceFraction, double rowFraction, - double columnFraction, RandomEngine randomGenerator) { + double columnFraction, Random randomGenerator) { // check preconditions and allow for a little tolerance double epsilon = 1.0e-09; if (sliceFraction < 0 - epsilon || sliceFraction > 1 + epsilon) { @@ -572,7 +574,7 @@ return result; // random generator seeded with current time if (randomGenerator == null) { - randomGenerator = new MersenneTwister((int) System.currentTimeMillis()); + randomGenerator = RandomUtils.getRandom(); } int nslices = (int) Math.round(matrix.slices() * sliceFraction); Modified: mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/ExponentialTest.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/ExponentialTest.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/ExponentialTest.java (original) +++ mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/ExponentialTest.java Thu Sep 2 04:33:38 2010 @@ -19,6 +19,7 @@ package org.apache.mahout.math.jet.rando import org.apache.commons.math.ConvergenceException; import org.apache.commons.math.FunctionEvaluationException; +import org.apache.mahout.common.RandomUtils; import org.apache.mahout.math.jet.random.engine.MersenneTwister; import org.junit.Test; @@ -34,7 +35,7 @@ import static org.junit.Assert.assertEqu public class ExponentialTest extends DistributionTest { @Test public void testCdf() { - Exponential dist = new Exponential(5.0, new MersenneTwister(1)); + Exponential dist = new Exponential(5.0, RandomUtils.getRandom()); for (int i = 0; i < 1000; i++) { double x = i / 50.0; assertEquals(1 - Math.exp(-x * 5.0), dist.cdf(x), 1e-9); @@ -69,7 +70,7 @@ public class ExponentialTest extends Dis @Test public void testNextDouble() throws ConvergenceException, FunctionEvaluationException { double[] x = {-0.01, 0.1053605, 0.2231436, 0.3566749, 0.5108256, 0.6931472, 0.9162907, 1.2039728, 1.6094379, 2.3025851}; - Exponential dist = new Exponential(1, new MersenneTwister(1)); + Exponential dist = new Exponential(1, RandomUtils.getRandom()); for (double lambda : new double[]{13.0, 0.02, 1.6}) { dist.setState(lambda); checkEmpiricalDistribution(dist, 10000, lambda); Modified: mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/GammaTest.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/GammaTest.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/GammaTest.java (original) +++ mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/GammaTest.java Thu Sep 2 04:33:38 2010 @@ -17,6 +17,7 @@ package org.apache.mahout.math.jet.random; +import org.apache.mahout.common.RandomUtils; import org.apache.mahout.math.jet.random.engine.MersenneTwister; import org.apache.mahout.math.jet.random.engine.RandomEngine; import org.junit.Assert; @@ -24,12 +25,13 @@ import org.junit.Test; import java.util.Arrays; import java.util.Locale; +import java.util.Random; public class GammaTest { @Test public void testNextDouble() { double[] z = new double[100000]; - RandomEngine gen = new MersenneTwister(1); + Random gen = RandomUtils.getRandom(); for (double alpha : new double[]{1, 2, 10, 0.1, 0.01, 100}) { Gamma g = new Gamma(alpha, 1, gen); for (int i = 0; i < z.length; i++) { @@ -47,7 +49,7 @@ public class GammaTest { @Test public void testCdf() { - RandomEngine gen = new MersenneTwister(1); + Random gen = RandomUtils.getRandom(); // verify scaling for special case of alpha = 1 for (double beta : new double[]{1, 0.1, 2, 100}) { @@ -55,9 +57,9 @@ public class GammaTest { Gamma g2 = new Gamma(1, 1, gen); for (double x : seq(0, 0.99, 0.1)) { Assert.assertEquals(String.format(Locale.ENGLISH, "Rate invariance: x = %.4f, alpha = 1, beta = %.1f", x, beta), - 1 - Math.exp(-x * beta), g1.cdf(x), 1.0e-9); + 1 - Math.exp(-x * beta), g1.cdf(x), 1.0e-9); Assert.assertEquals(String.format(Locale.ENGLISH, "Rate invariance: x = %.4f, alpha = 1, beta = %.1f", x, beta), - g2.cdf(beta * x), g1.cdf(x), 1.0e-9); + g2.cdf(beta * x), g1.cdf(x), 1.0e-9); } } @@ -68,8 +70,8 @@ public class GammaTest { Gamma g1 = new Gamma(alpha, beta, gen); for (double x : seq(0, 0.9999, 0.001)) { Assert.assertEquals( - String.format(Locale.ENGLISH, "Rate invariance: x = %.4f, alpha = %.2f, beta = %.1f", x, alpha, beta), - g.cdf(x * beta), g1.cdf(x), 0); + String.format(Locale.ENGLISH, "Rate invariance: x = %.4f, alpha = %.2f, beta = %.1f", x, alpha, beta), + g.cdf(x * beta), g1.cdf(x), 0); } } } @@ -94,7 +96,7 @@ public class GammaTest { } private static void checkGammaCdf(double alpha, double beta, double... values) { - Gamma g = new Gamma(alpha, beta, new MersenneTwister()); + Gamma g = new Gamma(alpha, beta, RandomUtils.getRandom()); int i = 0; for (double x : seq(0, 2 * alpha, 2 * alpha / 10)) { Assert.assertEquals(String.format(Locale.ENGLISH, "alpha=%.2f, i=%d, x=%.2f", alpha, i, x), @@ -114,15 +116,15 @@ public class GammaTest { @Test public void testPdf() { - RandomEngine gen = new MersenneTwister(1); + Random gen = RandomUtils.getRandom(); for (double alpha : new double[]{0.01, 0.1, 1, 2, 10, 100}) { for (double beta : new double[]{0.1, 1, 2, 100}) { Gamma g1 = new Gamma(alpha, beta, gen); for (double x : seq(0, 0.99, 0.1)) { double p = Math.pow(beta, alpha) * Math.pow(x, alpha - 1) * - Math.exp(-beta * x - org.apache.mahout.math.jet.stat.Gamma.logGamma(alpha)); + Math.exp(-beta * x - org.apache.mahout.math.jet.stat.Gamma.logGamma(alpha)); Assert.assertEquals(String.format(Locale.ENGLISH, "alpha=%.2f, beta=%.2f, x=%.2f\n", alpha, beta, x), - p, g1.pdf(x), 1.0e-9); + p, g1.pdf(x), 1.0e-9); } } } Modified: mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NegativeBinomialTest.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NegativeBinomialTest.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NegativeBinomialTest.java (original) +++ mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NegativeBinomialTest.java Thu Sep 2 04:33:38 2010 @@ -23,7 +23,7 @@ import com.google.common.collect.Iterabl import com.google.common.io.CharStreams; import com.google.common.io.InputSupplier; import com.google.common.io.Resources; -import org.apache.mahout.math.jet.random.engine.MersenneTwister; +import org.apache.mahout.common.RandomUtils; import org.junit.Assert; import org.junit.Test; @@ -51,7 +51,7 @@ public class NegativeBinomialTest { int r = Integer.parseInt(Iterables.get(values, 2)); double density = Double.parseDouble(Iterables.get(values, 3)); double cume = Double.parseDouble(Iterables.get(values, 4)); - NegativeBinomial nb = new NegativeBinomial(r, p, new MersenneTwister()); + NegativeBinomial nb = new NegativeBinomial(r, p, RandomUtils.getRandom()); Assert.assertEquals("cumulative " + k + ',' + p + ',' + r, cume, nb.cdf(k), cume * 1e-05); Assert.assertEquals("density " + k + ',' + p + ',' + r, density, nb.pdf(k), density * 1e-05); } @@ -62,7 +62,7 @@ public class NegativeBinomialTest { public void sample() { for (double p : new double[]{0.1, 0.2, 0.5, 0.9}) { for (int r = 1; r < 5; r++) { - NegativeBinomial nb = new NegativeBinomial(r, p, new MersenneTwister(1)); + NegativeBinomial nb = new NegativeBinomial(r, p, RandomUtils.getRandom()); int[] counts = new int[N]; for (int i = 0; i < N; i++) { int k = nb.nextInt(); Modified: mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NormalTest.java URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NormalTest.java?rev=991806&r1=991805&r2=991806&view=diff ============================================================================== --- mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NormalTest.java (original) +++ mahout/trunk/math/src/test/java/org/apache/mahout/math/jet/random/NormalTest.java Thu Sep 2 04:33:38 2010 @@ -19,6 +19,7 @@ package org.apache.mahout.math.jet.rando import org.apache.commons.math.ConvergenceException; import org.apache.commons.math.FunctionEvaluationException; +import org.apache.mahout.common.RandomUtils; import org.apache.mahout.math.jet.random.engine.MersenneTwister; import org.junit.Assert; import org.junit.Test; @@ -53,7 +54,7 @@ public class NormalTest extends Distribu double offset = 0; double scale = 1; for (int k = 0; k < 20; k++) { - Normal dist = new Normal(offset, scale, new MersenneTwister()); + Normal dist = new Normal(offset, scale, RandomUtils.getRandom()); checkDistribution(dist, breaks, offset, scale, 10000); offset = gen.nextGaussian(); scale = Math.exp(3 * gen.nextGaussian()); @@ -62,7 +63,7 @@ public class NormalTest extends Distribu @Test public void testSetState() throws ConvergenceException, FunctionEvaluationException { - Normal dist = new Normal(0, 1, new MersenneTwister()); + Normal dist = new Normal(0, 1, RandomUtils.getRandom()); dist.setState(1.3, 5.9); checkDistribution(dist, breaks, 1.3, 5.9, 10000); }
