You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2021/05/24 01:34:26 UTC
[commons-math] 01/02: MATH-1533: Javadoc explaining that the issue
is actually not a problem.
This is an automated email from the ASF dual-hosted git repository.
erans pushed a commit to branch modularized_master
in repository https://gitbox.apache.org/repos/asf/commons-math.git
commit 7f383414c2fff5caba046f4a4c5d9ff7e674b22f
Author: Gilles Sadowski <gi...@gmail.com>
AuthorDate: Mon May 24 02:31:12 2021 +0200
MATH-1533: Javadoc explaining that the issue is actually not a problem.
Corresponding unit test has been removed.
---
.../legacy/distribution/EnumeratedDistribution.java | 14 ++++++++++++++
.../distribution/EnumeratedIntegerDistribution.java | 6 +++++-
.../EnumeratedIntegerDistributionTest.java | 21 +++------------------
3 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedDistribution.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedDistribution.java
index ffbccc9..8c032a0 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedDistribution.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedDistribution.java
@@ -169,6 +169,20 @@ public class EnumeratedDistribution<T> implements Serializable {
/**
* Sampler functionality.
+ *
+ * <ul>
+ * <li>
+ * The cumulative probability distribution is created (and sampled from)
+ * using the input order of the {@link EnumeratedDistribution#EnumeratedDistribution(List)
+ * constructor arguments}: A different input order will create a different
+ * sequence of samples.
+ * The samples will only be reproducible with the same RNG starting from
+ * the same RNG state and the same input order to constructor.
+ * </li>
+ * <li>
+ * The minimum supported probability is 2<sup>-53</sup>.
+ * </li>
+ * </ul>
*/
public class Sampler {
/** Underlying sampler. */
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistribution.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistribution.java
index 75ad2c9..c6447d8 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistribution.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistribution.java
@@ -229,7 +229,11 @@ public class EnumeratedIntegerDistribution extends AbstractIntegerDistribution {
return true;
}
- /** {@inheritDoc} */
+ /**
+ * {@inheritDoc}
+ *
+ * Refer to {@link EnumeratedDistribution.Sampler} for implementation details.
+ */
@Override
public DiscreteDistribution.Sampler createSampler(final UniformRandomProvider rng) {
return new DiscreteDistribution.Sampler() {
diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistributionTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistributionTest.java
index fba5a30..1c11ec9 100644
--- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistributionTest.java
+++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EnumeratedIntegerDistributionTest.java
@@ -158,8 +158,7 @@ public class EnumeratedIntegerDistributionTest {
public void testSample() {
final int n = 1000000;
final DiscreteDistribution.Sampler sampler
- = testDistribution.createSampler(RandomSource.create(RandomSource.WELL_19937_C,
- -334759360)); // fixed seed
+ = testDistribution.createSampler(RandomSource.create(RandomSource.WELL_19937_C));
final int[] samples = AbstractIntegerDistribution.sample(n, sampler);
Assert.assertEquals(n, samples.length);
double sum = 0;
@@ -169,9 +168,9 @@ public class EnumeratedIntegerDistributionTest {
sumOfSquares += samples[i] * samples[i];
}
Assert.assertEquals(testDistribution.getMean(),
- sum / n, 1e-2);
+ sum / n, 1e-2);
Assert.assertEquals(testDistribution.getVariance(),
- sumOfSquares / n - FastMath.pow(sum / n, 2), 1e-2);
+ sumOfSquares / n - FastMath.pow(sum / n, 2), 1e-2);
}
@Test
@@ -181,18 +180,4 @@ public class EnumeratedIntegerDistributionTest {
Assert.assertEquals(0.5, distribution.probability(2), 0);
Assert.assertEquals(0.5, distribution.cumulativeProbability(1), 0);
}
-
- @Test
- public void testMath1533() {
- final EnumeratedIntegerDistribution d1 = new EnumeratedIntegerDistribution(new int[] {1, 2},
- new double[] {0.3, 0.7});
- final EnumeratedIntegerDistribution d2 = new EnumeratedIntegerDistribution(new int[] {2, 1},
- new double[] {0.7, 0.3});
-
- final int len = 24;
- final RandomSource r = RandomSource.WELL_19937_C;
- final int s = 42;
- Assert.assertTrue(Arrays.equals(AbstractIntegerDistribution.sample(len, d1.createSampler(RandomSource.create(r, s))),
- AbstractIntegerDistribution.sample(len, d2.createSampler(RandomSource.create(r, s)))));
- }
}