You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2019/02/14 13:59:28 UTC
[commons-rng] 05/17: RNG-69: Updated code formatting and
GeometricSampler javadoc
This is an automated email from the ASF dual-hosted git repository.
aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git
commit 77cfd26485c126c6245a9ae70a27000dbad8492f
Author: aherbert <a....@sussex.ac.uk>
AuthorDate: Tue Jan 29 12:29:38 2019 +0000
RNG-69: Updated code formatting and GeometricSampler javadoc
---
.../rng/sampling/distribution/GeometricSampler.java | 18 +++++++++++-------
.../sampling/distribution/DiscreteSamplersList.java | 2 +-
.../sampling/distribution/GeometricSamplerTest.java | 2 +-
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java
index ab2a6c4..ba62ac4 100644
--- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java
+++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java
@@ -25,16 +25,20 @@ import org.apache.commons.rng.UniformRandomProvider;
* <p>This distribution samples the number of failures before the first success taking values in the
* set {@code [0, 1, 2, ...]}.
*
- * <p>The sample is computed using a related an exponential distribution. If X is an exponentially
- * distributed random variable with parameter λ, then Y = floor(X) is a geometrically distributed
- * random variable with parameter p = 1 − e<sup>−λ</sup>, with {@code p} the probability of success.
+ * <p>The sample is computed using a related an exponential distribution. If {@code X} is an
+ * exponentially distributed random variable with parameter λ, then {@code Y = floor(X)} is a
+ * geometrically distributed random variable with parameter p = 1 − e<sup>−λ</sup>, with {@code p}
+ * the probability of success.
*
- * <p>Note: As the probability of success ({@code p}) tends towards zero the mean of the
+ * <p>This sampler outperforms using the {@link InverseTransformDiscreteSampler} with an appropriate
+ * Geometric inverse cumulative probability function.
+ *
+ * <p>Usage note: As the probability of success ({@code p}) tends towards zero the mean of the
* distribution ({@code (1-p)/p}) tends towards infinity and due to the use of {@code int} for the
- * sample this results in truncation of the distribution.
+ * sample this can result in truncation of the distribution.
*
* @see <a
- * href="https://en.wikipedia.org/wiki/Geometric_distribution#Related_distributions">geometric
+ * href="https://en.wikipedia.org/wiki/Geometric_distribution#Related_distributions">Geometric
* distribution - related distributions</a>
*
* @since 1.3
@@ -118,7 +122,7 @@ public class GeometricSampler implements DiscreteSampler {
public GeometricSampler(UniformRandomProvider rng, double probabilityOfSuccess) {
if (probabilityOfSuccess <= 0 || probabilityOfSuccess > 1) {
throw new IllegalArgumentException(
- "Probability of success must be in the range [0 < p <= 1]: " + probabilityOfSuccess);
+ "Probability of success must be in the range [0 < p <= 1]: " + probabilityOfSuccess);
}
delegate = probabilityOfSuccess == 1 ?
GeometricP1Sampler.INSTANCE :
diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java
index 3f9adb8..3e93c86 100644
--- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java
+++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java
@@ -50,7 +50,7 @@ public class DiscreteSamplersList {
MathArrays.sequence(10, 0, 1),
RandomSource.create(RandomSource.ISAAC));
// Geometric.
- add(LIST, new org.apache.commons.math3.distribution.GeometricDistribution(probSuccessGeometric),
+ add(LIST, new org.apache.commons.math3.distribution.GeometricDistribution(null, probSuccessGeometric),
MathArrays.sequence(10, 0, 1),
new GeometricSampler(RandomSource.create(RandomSource.XOR_SHIFT_1024_S), probSuccessGeometric));
diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java
index 8c5a39e..00f1000 100644
--- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java
+++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java
@@ -65,7 +65,7 @@ public class GeometricSamplerTest {
// All samples should be max value
for (int i = 0; i < 10; i++) {
Assert.assertEquals("p=(almost 0) should have Integer.MAX_VALUE for all samples", Integer.MAX_VALUE,
- sampler.sample());
+ sampler.sample());
}
}