MATH-1158.

Method "createSampler" overridden in "LogNormalDistribution".
This commit is contained in:
Gilles 2016-03-12 03:12:54 +01:00
parent f72b5e65c0
commit 26d668f6d5
1 changed files with 20 additions and 0 deletions

View File

@ -22,6 +22,7 @@ import org.apache.commons.math4.exception.NumberIsTooLargeException;
import org.apache.commons.math4.exception.util.LocalizedFormats; import org.apache.commons.math4.exception.util.LocalizedFormats;
import org.apache.commons.math4.random.RandomGenerator; import org.apache.commons.math4.random.RandomGenerator;
import org.apache.commons.math4.random.Well19937c; import org.apache.commons.math4.random.Well19937c;
import org.apache.commons.math4.rng.UniformRandomProvider;
import org.apache.commons.math4.special.Erf; import org.apache.commons.math4.special.Erf;
import org.apache.commons.math4.util.FastMath; import org.apache.commons.math4.util.FastMath;
@ -143,6 +144,7 @@ public class LogNormalDistribution extends AbstractRealDistribution {
* @throws NotStrictlyPositiveException if {@code shape <= 0}. * @throws NotStrictlyPositiveException if {@code shape <= 0}.
* @since 3.3 * @since 3.3
*/ */
@Deprecated
public LogNormalDistribution(RandomGenerator rng, double scale, double shape) public LogNormalDistribution(RandomGenerator rng, double scale, double shape)
throws NotStrictlyPositiveException { throws NotStrictlyPositiveException {
this(rng, scale, shape, DEFAULT_INVERSE_ABSOLUTE_ACCURACY); this(rng, scale, shape, DEFAULT_INVERSE_ABSOLUTE_ACCURACY);
@ -158,6 +160,7 @@ public class LogNormalDistribution extends AbstractRealDistribution {
* @throws NotStrictlyPositiveException if {@code shape <= 0}. * @throws NotStrictlyPositiveException if {@code shape <= 0}.
* @since 3.1 * @since 3.1
*/ */
@Deprecated
public LogNormalDistribution(RandomGenerator rng, public LogNormalDistribution(RandomGenerator rng,
double scale, double scale,
double shape, double shape,
@ -345,8 +348,25 @@ public class LogNormalDistribution extends AbstractRealDistribution {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
@Deprecated
public double sample() { public double sample() {
final double n = random.nextGaussian(); final double n = random.nextGaussian();
return FastMath.exp(scale + shape * n); return FastMath.exp(scale + shape * n);
} }
/** {@inheritDoc} */
@Override
public RealDistribution.Sampler createSampler(final UniformRandomProvider rng) {
return new RealDistribution.Sampler() {
/** Gaussian sampling. */
final RealDistribution.Sampler gaussian = new NormalDistribution().createSampler(rng);
/** {@inheritDoc} */
@Override
public double sample() {
final double n = random.nextGaussian();
return FastMath.exp(scale + shape * n);
}
};
}
} }