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 2021/08/05 16:46:02 UTC
[commons-rng] 11/21: Add missing samplers to sampling application
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 d835b3b8de3c824226c3c982dec632bf18c4609c
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Thu Aug 5 15:05:23 2021 +0100
Add missing samplers to sampling application
---
.../ProbabilityDensityApproximationCommand.java | 53 ++++++++++++++++++++--
1 file changed, 50 insertions(+), 3 deletions(-)
diff --git a/commons-rng-examples/examples-sampling/src/main/java/org/apache/commons/rng/examples/sampling/ProbabilityDensityApproximationCommand.java b/commons-rng-examples/examples-sampling/src/main/java/org/apache/commons/rng/examples/sampling/ProbabilityDensityApproximationCommand.java
index d66b1f0..36a46a8 100644
--- a/commons-rng-examples/examples-sampling/src/main/java/org/apache/commons/rng/examples/sampling/ProbabilityDensityApproximationCommand.java
+++ b/commons-rng-examples/examples-sampling/src/main/java/org/apache/commons/rng/examples/sampling/ProbabilityDensityApproximationCommand.java
@@ -29,12 +29,15 @@ import picocli.CommandLine.Mixin;
import picocli.CommandLine.Option;
import org.apache.commons.rng.sampling.distribution.ZigguratNormalizedGaussianSampler;
+import org.apache.commons.rng.sampling.distribution.ZigguratSampler;
import org.apache.commons.rng.sampling.distribution.MarsagliaNormalizedGaussianSampler;
+import org.apache.commons.rng.sampling.distribution.StableSampler;
import org.apache.commons.rng.sampling.distribution.BoxMullerNormalizedGaussianSampler;
import org.apache.commons.rng.sampling.distribution.ChengBetaSampler;
import org.apache.commons.rng.sampling.distribution.AhrensDieterExponentialSampler;
import org.apache.commons.rng.sampling.distribution.AhrensDieterMarsagliaTsangGammaSampler;
import org.apache.commons.rng.sampling.distribution.InverseTransformParetoSampler;
+import org.apache.commons.rng.sampling.distribution.LevySampler;
import org.apache.commons.rng.sampling.distribution.LogNormalSampler;
import org.apache.commons.rng.sampling.distribution.ContinuousUniformSampler;
import org.apache.commons.rng.sampling.distribution.GaussianSampler;
@@ -82,12 +85,16 @@ class ProbabilityDensityApproximationCommand implements Callable<Void> {
MarsagliaGaussianSampler,
/** The Box muller gaussian sampler. */
BoxMullerGaussianSampler,
+ /** The modified Ziggurat gaussian sampler. */
+ ModifiedZigguratGaussianSampler,
/** The Cheng beta sampler case 1. */
ChengBetaSamplerCase1,
/** The Cheng beta sampler case 2. */
ChengBetaSamplerCase2,
/** The Ahrens dieter exponential sampler. */
AhrensDieterExponentialSampler,
+ /** The modified Ziggurat exponential sampler. */
+ ModifiedZigguratExponentialSampler,
/** The Ahrens dieter marsaglia tsang gamma sampler small gamma. */
AhrensDieterMarsagliaTsangGammaSamplerCase1,
/** The Ahrens dieter marsaglia tsang gamma sampler large gamma. */
@@ -102,6 +109,12 @@ class ProbabilityDensityApproximationCommand implements Callable<Void> {
LogNormalMarsagliaGaussianSampler,
/** The Log normal box muller gaussian sampler. */
LogNormalBoxMullerGaussianSampler,
+ /** The Log normal modified ziggurat gaussian sampler. */
+ LogNormalModifiedZigguratGaussianSampler,
+ /** The Levy sampler. */
+ LevySampler,
+ /** The stable sampler. */
+ StableSampler,
}
/**
@@ -200,6 +213,11 @@ class ProbabilityDensityApproximationCommand implements Callable<Void> {
gaussMean, gaussSigma),
gaussMin, gaussMax, "gauss.boxmuller.txt");
}
+ if (samplers.contains(Sampler.ModifiedZigguratGaussianSampler)) {
+ createDensity(GaussianSampler.of(ZigguratSampler.NormalizedGaussian.of(rng),
+ gaussMean, gaussSigma),
+ gaussMin, gaussMax, "gauss.modified.ziggurat.txt");
+ }
final double betaMin = 0;
final double betaMax = 1;
@@ -216,13 +234,17 @@ class ProbabilityDensityApproximationCommand implements Callable<Void> {
betaMin, betaMax, "beta.case2.txt");
}
+ final double meanExp = 3.45;
+ final double expMin = 0;
+ final double expMax = 60;
if (samplers.contains(Sampler.AhrensDieterExponentialSampler)) {
- final double meanExp = 3.45;
- final double expMin = 0;
- final double expMax = 60;
createDensity(AhrensDieterExponentialSampler.of(rng, meanExp),
expMin, expMax, "exp.txt");
}
+ if (samplers.contains(Sampler.ModifiedZigguratExponentialSampler)) {
+ createDensity(ZigguratSampler.Exponential.of(rng, meanExp),
+ expMin, expMax, "exp.modified.ziggurat.txt");
+ }
final double gammaMin = 0;
final double gammaMax1 = 40;
@@ -274,6 +296,31 @@ class ProbabilityDensityApproximationCommand implements Callable<Void> {
scaleLogNormal, shapeLogNormal),
logNormalMin, logNormalMax, "lognormal.boxmuller.txt");
}
+ if (samplers.contains(Sampler.LogNormalModifiedZigguratGaussianSampler)) {
+ createDensity(LogNormalSampler.of(ZigguratSampler.NormalizedGaussian.of(rng),
+ scaleLogNormal, shapeLogNormal),
+ logNormalMin, logNormalMax, "lognormal.modified.ziggurat.txt");
+ }
+
+ if (samplers.contains(Sampler.LevySampler)) {
+ final double levyLocation = 1.23;
+ final double levyscale = 0.75;
+ final double levyMin = levyLocation;
+ // Quantile 0.99
+ final double levyMax = 4.7756e+03;
+ createDensity(LevySampler.of(rng, levyLocation, levyscale),
+ levyMin, levyMax, "levy.txt");
+ }
+
+ if (samplers.contains(Sampler.StableSampler)) {
+ final double stableAlpha = 1.23;
+ final double stableBeta = 0.25;
+ // Quantiles 0.0005 to 0.9995
+ final double stableMin = -131.9640;
+ final double stableMax = 200.9239;
+ createDensity(StableSampler.of(rng, stableAlpha, stableBeta),
+ stableMin, stableMax, "stable.txt");
+ }
return null;
}