Usage examples. Code updated as a consequence of MATH-1383.
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/a215c3f9 Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/a215c3f9 Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/a215c3f9 Branch: refs/heads/master Commit: a215c3f91a5b4baf56e767a4e91b6511cf1544ac Parents: 55cc560 Author: Gilles <er...@apache.org> Authored: Sun Sep 4 12:39:00 2016 +0200 Committer: Gilles <er...@apache.org> Committed: Sun Sep 4 12:39:00 2016 +0200 ---------------------------------------------------------------------- .../math4/userguide/ClusterAlgorithmComparison.java | 5 +++-- .../userguide/LowDiscrepancyGeneratorComparison.java | 13 +++++++------ .../math4/userguide/filter/CannonballExample.java | 14 ++++++++------ .../userguide/filter/ConstantVoltageExample.java | 14 ++++++++------ .../commons/math4/userguide/genetics/Polygon.java | 6 ++++-- .../math4/userguide/geometry/GeometryExample.java | 7 ++++--- .../commons/math4/userguide/sofm/ChineseRings.java | 5 +++-- .../math4/userguide/sofm/ChineseRingsClassifier.java | 8 +++++--- src/userguide/pom.xml | 5 +++++ 9 files changed, 47 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/ClusterAlgorithmComparison.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/ClusterAlgorithmComparison.java b/src/userguide/java/org/apache/commons/math4/userguide/ClusterAlgorithmComparison.java index 9dbd1c2..05d86da 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/ClusterAlgorithmComparison.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/ClusterAlgorithmComparison.java @@ -34,6 +34,9 @@ import java.util.List; import javax.swing.JComponent; import javax.swing.JLabel; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.distribution.RealDistribution; import org.apache.commons.math4.distribution.UniformRealDistribution; import org.apache.commons.math4.distribution.NormalDistribution; @@ -48,8 +51,6 @@ import org.apache.commons.math4.ml.clustering.FuzzyKMeansClusterer; import org.apache.commons.math4.ml.clustering.KMeansPlusPlusClusterer; import org.apache.commons.math4.random.JDKRandomAdaptor; import org.apache.commons.math4.random.SobolSequenceGenerator; -import org.apache.commons.math4.rng.UniformRandomProvider; -import org.apache.commons.math4.rng.RandomSource; import org.apache.commons.math4.util.FastMath; import org.apache.commons.math4.util.Pair; import org.apache.commons.math4.userguide.ExampleUtils.ExampleFrame; http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/LowDiscrepancyGeneratorComparison.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/LowDiscrepancyGeneratorComparison.java b/src/userguide/java/org/apache/commons/math4/userguide/LowDiscrepancyGeneratorComparison.java index 39b0b32..f1b81d5 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/LowDiscrepancyGeneratorComparison.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/LowDiscrepancyGeneratorComparison.java @@ -32,10 +32,11 @@ import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JTextArea; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.geometry.euclidean.twod.Vector2D; import org.apache.commons.math4.random.HaltonSequenceGenerator; -import org.apache.commons.math4.random.JDKRandomGenerator; -import org.apache.commons.math4.random.MersenneTwister; import org.apache.commons.math4.random.RandomGenerator; import org.apache.commons.math4.random.RandomVectorGenerator; import org.apache.commons.math4.random.SobolSequenceGenerator; @@ -130,12 +131,12 @@ public class LowDiscrepancyGeneratorComparison { List<Pair<String, RandomVectorGenerator>> generators = new ArrayList<Pair<String, RandomVectorGenerator>>(); generators.add(new Pair<String, RandomVectorGenerator>("Uncorrelated\nUniform(JDK)", - new UncorrelatedRandomVectorGenerator(2, new UniformRandomGenerator(new JDKRandomGenerator())))); + new UncorrelatedRandomVectorGenerator(2, new UniformRandomGenerator(RandomSource.create(RandomSource.JDK))))); generators.add(new Pair<String, RandomVectorGenerator>("Independent\nRandom(MT)", new RandomVectorGenerator() { - RandomGenerator[] rngs = new RandomGenerator[] { - new MersenneTwister(0), - new MersenneTwister(1) + final UniformRandomProvider[] rngs = new UniformRandomProvider[] { + RandomSource.create(RandomSource.MT, 123456789), + RandomSource.create(RandomSource.MT, 987654321) }; public double[] nextVector() { http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/filter/CannonballExample.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/filter/CannonballExample.java b/src/userguide/java/org/apache/commons/math4/userguide/filter/CannonballExample.java index 7211a6b..b26a489 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/filter/CannonballExample.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/filter/CannonballExample.java @@ -25,6 +25,9 @@ import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JPanel; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.filter.DefaultMeasurementModel; import org.apache.commons.math4.filter.DefaultProcessModel; import org.apache.commons.math4.filter.KalmanFilter; @@ -33,8 +36,7 @@ import org.apache.commons.math4.filter.ProcessModel; import org.apache.commons.math4.linear.MatrixUtils; import org.apache.commons.math4.linear.RealMatrix; import org.apache.commons.math4.linear.RealVector; -import org.apache.commons.math4.random.RandomGenerator; -import org.apache.commons.math4.random.Well19937c; +import org.apache.commons.math4.random.GaussianRandomGenerator; import org.apache.commons.math4.util.FastMath; import org.apache.commons.math4.userguide.ExampleUtils; import org.apache.commons.math4.userguide.ExampleUtils.ExampleFrame; @@ -59,7 +61,7 @@ public class CannonballExample { private final double timeslice; private final double measurementNoise; - private final RandomGenerator rng; + private final GaussianRandomGenerator rng; public Cannonball(double timeslice, double angle, double initialVelocity, double measurementNoise, int seed) { this.timeslice = timeslice; @@ -73,7 +75,7 @@ public class CannonballExample { this.location = new double[] { 0, 0 }; this.measurementNoise = measurementNoise; - this.rng = new Well19937c(seed); + this.rng = new GaussianRandomGenerator(RandomSource.create(RandomSource.WELL_19937_C, seed)); } public double getX() { @@ -85,11 +87,11 @@ public class CannonballExample { } public double getMeasuredX() { - return location[0] + rng.nextGaussian() * measurementNoise; + return location[0] + rng.nextNormalizedDouble() * measurementNoise; } public double getMeasuredY() { - return location[1] + rng.nextGaussian() * measurementNoise; + return location[1] + rng.nextNormalizedDouble() * measurementNoise; } public double getXVelocity() { http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/filter/ConstantVoltageExample.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/filter/ConstantVoltageExample.java b/src/userguide/java/org/apache/commons/math4/userguide/filter/ConstantVoltageExample.java index bf554d5..2dc414f 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/filter/ConstantVoltageExample.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/filter/ConstantVoltageExample.java @@ -25,6 +25,9 @@ import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JPanel; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.filter.DefaultMeasurementModel; import org.apache.commons.math4.filter.DefaultProcessModel; import org.apache.commons.math4.filter.KalmanFilter; @@ -34,8 +37,7 @@ import org.apache.commons.math4.linear.Array2DRowRealMatrix; import org.apache.commons.math4.linear.ArrayRealVector; import org.apache.commons.math4.linear.RealMatrix; import org.apache.commons.math4.linear.RealVector; -import org.apache.commons.math4.random.RandomGenerator; -import org.apache.commons.math4.random.Well19937c; +import org.apache.commons.math4.random.GaussianRandomGenerator; import org.apache.commons.math4.userguide.ExampleUtils; import org.apache.commons.math4.userguide.ExampleUtils.ExampleFrame; @@ -55,7 +57,7 @@ public class ConstantVoltageExample { private final double initialVoltage; private final double processNoise; private final double measurementNoise; - private final RandomGenerator rng; + private final GaussianRandomGenerator rng; private double voltage; @@ -64,7 +66,7 @@ public class ConstantVoltageExample { this.voltage = voltage; this.processNoise = processNoise; this.measurementNoise = measurementNoise; - rng = new Well19937c(seed); + rng = new GaussianRandomGenerator(RandomSource.create(RandomSource.WELL_19937_C, seed)); } /** @@ -77,12 +79,12 @@ public class ConstantVoltageExample { } public double getMeasuredVoltage() { - return getVoltage() + rng.nextGaussian() * measurementNoise; + return getVoltage() + rng.nextNormalizedDouble() * measurementNoise; } public void step() { // we apply only the process noise - voltage = initialVoltage + rng.nextGaussian() * processNoise; + voltage = initialVoltage + rng.nextNormalizedDouble() * processNoise; } } http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/genetics/Polygon.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/genetics/Polygon.java b/src/userguide/java/org/apache/commons/math4/userguide/genetics/Polygon.java index b6ad577..c9cf278 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/genetics/Polygon.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/genetics/Polygon.java @@ -20,8 +20,10 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.GeneralPath; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.genetics.GeneticAlgorithm; -import org.apache.commons.math4.random.RandomGenerator; import org.apache.commons.math4.util.FastMath; /** @@ -50,7 +52,7 @@ public class Polygon { public static Polygon randomPolygon(int length) { final int polygonSize = 4 + 2 * length; - final RandomGenerator random = GeneticAlgorithm.getRandomGenerator(); + final UniformRandomProvider random = GeneticAlgorithm.getRandomGenerator(); Polygon p = new Polygon(); p.data = new float[polygonSize]; http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/geometry/GeometryExample.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/geometry/GeometryExample.java b/src/userguide/java/org/apache/commons/math4/userguide/geometry/GeometryExample.java index 941243b..c0aa91c 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/geometry/GeometryExample.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/geometry/GeometryExample.java @@ -31,6 +31,9 @@ import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JSplitPane; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.geometry.enclosing.Encloser; import org.apache.commons.math4.geometry.enclosing.EnclosingBall; import org.apache.commons.math4.geometry.enclosing.WelzlEncloser; @@ -41,8 +44,6 @@ import org.apache.commons.math4.geometry.euclidean.twod.Vector2D; import org.apache.commons.math4.geometry.euclidean.twod.hull.ConvexHull2D; import org.apache.commons.math4.geometry.euclidean.twod.hull.ConvexHullGenerator2D; import org.apache.commons.math4.geometry.euclidean.twod.hull.MonotoneChain; -import org.apache.commons.math4.random.MersenneTwister; -import org.apache.commons.math4.random.RandomGenerator; import org.apache.commons.math4.util.FastMath; import org.apache.commons.math4.userguide.ExampleUtils; import org.apache.commons.math4.userguide.ExampleUtils.ExampleFrame; @@ -65,7 +66,7 @@ import org.piccolo2d.nodes.PText; public class GeometryExample { public static List<Vector2D> createRandomPoints(int size) { - RandomGenerator random = new MersenneTwister(); + final UniformRandomProvider random = RandomSource.create(RandomSource.MT); // create the cloud container List<Vector2D> points = new ArrayList<Vector2D>(size); http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRings.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRings.java b/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRings.java index 2c942a9..f906ac5 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRings.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRings.java @@ -17,11 +17,12 @@ package org.apache.commons.math4.userguide.sofm; +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.geometry.euclidean.threed.Vector3D; import org.apache.commons.math4.geometry.euclidean.threed.Rotation; import org.apache.commons.math4.random.UnitSphereRandomVectorGenerator; -import org.apache.commons.math4.rng.UniformRandomProvider; -import org.apache.commons.math4.rng.RandomSource; import org.apache.commons.math4.distribution.RealDistribution; import org.apache.commons.math4.distribution.UniformRealDistribution; http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRingsClassifier.java ---------------------------------------------------------------------- diff --git a/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRingsClassifier.java b/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRingsClassifier.java index 6dbd36c..7eef617 100644 --- a/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRingsClassifier.java +++ b/src/userguide/java/org/apache/commons/math4/userguide/sofm/ChineseRingsClassifier.java @@ -20,6 +20,10 @@ package org.apache.commons.math4.userguide.sofm; import java.util.Iterator; import java.io.PrintWriter; import java.io.IOException; + +import org.apache.commons.rng.UniformRandomProvider; +import org.apache.commons.rng.RandomSource; + import org.apache.commons.math4.ml.neuralnet.SquareNeighbourhood; import org.apache.commons.math4.ml.neuralnet.FeatureInitializer; import org.apache.commons.math4.ml.neuralnet.FeatureInitializerFactory; @@ -33,8 +37,6 @@ import org.apache.commons.math4.ml.neuralnet.sofm.KohonenUpdateAction; import org.apache.commons.math4.ml.neuralnet.sofm.KohonenTrainingTask; import org.apache.commons.math4.ml.distance.DistanceMeasure; import org.apache.commons.math4.ml.distance.EuclideanDistance; -import org.apache.commons.math4.random.RandomGenerator; -import org.apache.commons.math4.random.Well19937c; import org.apache.commons.math4.stat.descriptive.SummaryStatistics; import org.apache.commons.math4.geometry.euclidean.threed.Vector3D; import org.apache.commons.math4.util.FastMath; @@ -253,7 +255,7 @@ public class ChineseRingsClassifier { /** Data. */ final Vector3D[] points = rings.getPoints(); /** RNG. */ - final RandomGenerator rng = new Well19937c(); + final UniformRandomProvider rng = RandomSource.create(RandomSource.KISS); /** Number of samples. */ private long n = 0; http://git-wip-us.apache.org/repos/asf/commons-math/blob/a215c3f9/src/userguide/pom.xml ---------------------------------------------------------------------- diff --git a/src/userguide/pom.xml b/src/userguide/pom.xml index 4f3c888..dfcb010 100644 --- a/src/userguide/pom.xml +++ b/src/userguide/pom.xml @@ -111,5 +111,10 @@ <artifactId>commons-lang3</artifactId> <version>3.1</version> </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-rng</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> </dependencies> </project>