Class Normal
- java.lang.Object
-
- com.opengamma.strata.math.impl.cern.Normal
-
- All Implemented Interfaces:
Serializable
,Cloneable
,DoubleUnaryOperator
,IntUnaryOperator
public class Normal extends Object
Normal (aka Gaussian) distribution; See the math definition and animated definition.1 2 pdf(x) = --------- exp( - (x-mean) / 2v ) sqrt(2pi*v) x - 1 | | 2 cdf(x) = --------- | exp( - (t-mean) / 2v ) dt sqrt(2pi*v)| | - -inf.
where v = variance = standardDeviation^2.Instance methods operate on a user supplied uniform random number generator; they are unsynchronized.
- Static methods operate on a default uniform random number generator; they are synchronized.
Implementation: Polar Box-Muller transformation. See G.E.P. Box, M.E. Muller (1958): A note on the generation of random normal deviates, Annals Math. Statist. 29, 610-611.
- Version:
- 1.0, 09/24/99
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected double
cache
protected boolean
cacheFilled
protected double
mean
protected RandomEngine
randomGenerator
protected static Normal
shared
protected double
SQRT_INV
protected double
standardDeviation
protected double
variance
-
Constructor Summary
Constructors Constructor Description Normal(double mean, double standardDeviation, RandomEngine randomGenerator)
Constructs a normal (gauss) distribution.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description double
applyAsDouble(double dummy)
Equivalent to nextDouble().int
applyAsInt(int dummy)
Equivalent to nextInt().double
cdf(double x)
Returns the cumulative distribution function.Object
clone()
Returns a deep copy of the receiver; the copy will produce identical sequences.protected RandomEngine
getRandomGenerator()
Returns the used uniform random number generator;static RandomEngine
makeDefaultGenerator()
Constructs and returns a new uniform random number generation engine seeded with the current time.double
nextDouble()
Returns a random number from the distribution.double
nextDouble(double mean, double standardDeviation)
Returns a random number from the distribution; bypasses the internal state.int
nextInt()
Returns a random number from the distribution; returns (int) Math.round(nextDouble()).double
pdf(double x)
Returns the probability distribution function.protected void
setRandomGenerator(RandomEngine randomGenerator)
Sets the uniform random generator internally used.void
setState(double mean, double standardDeviation)
Sets the mean and variance.static double
staticNextDouble(double mean, double standardDeviation)
Returns a random number from the distribution with the given mean and standard deviation.String
toString()
Returns a String representation of the receiver.-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.function.DoubleUnaryOperator
andThen, compose
-
Methods inherited from interface java.util.function.IntUnaryOperator
andThen, compose
-
-
-
-
Field Detail
-
mean
protected double mean
-
variance
protected double variance
-
standardDeviation
protected double standardDeviation
-
cache
protected double cache
-
cacheFilled
protected boolean cacheFilled
-
SQRT_INV
protected double SQRT_INV
-
shared
protected static Normal shared
-
randomGenerator
protected RandomEngine randomGenerator
-
-
Constructor Detail
-
Normal
public Normal(double mean, double standardDeviation, RandomEngine randomGenerator)
Constructs a normal (gauss) distribution. Example: mean=0.0, standardDeviation=1.0.- Parameters:
mean
- meanstandardDeviation
- standard deviationrandomGenerator
- generator
-
-
Method Detail
-
cdf
public double cdf(double x)
Returns the cumulative distribution function.- Parameters:
x
- x- Returns:
- result
-
nextDouble
public double nextDouble()
Returns a random number from the distribution.- Returns:
- result
-
nextDouble
public double nextDouble(double mean, double standardDeviation)
Returns a random number from the distribution; bypasses the internal state.- Parameters:
mean
- meanstandardDeviation
- standard deviation- Returns:
- result
-
pdf
public double pdf(double x)
Returns the probability distribution function.- Parameters:
x
- x- Returns:
- result
-
setRandomGenerator
protected void setRandomGenerator(RandomEngine randomGenerator)
Sets the uniform random generator internally used.- Parameters:
randomGenerator
- input
-
setState
public void setState(double mean, double standardDeviation)
Sets the mean and variance.- Parameters:
mean
- meanstandardDeviation
- standard deviation
-
staticNextDouble
public static double staticNextDouble(double mean, double standardDeviation)
Returns a random number from the distribution with the given mean and standard deviation.- Parameters:
mean
- meanstandardDeviation
- standard deviation- Returns:
- result
-
toString
public String toString()
Returns a String representation of the receiver.
-
applyAsDouble
public double applyAsDouble(double dummy)
Equivalent to nextDouble(). This has the effect that distributions can now be used as function objects, returning a random number upon function evaluation.- Specified by:
applyAsDouble
in interfaceDoubleUnaryOperator
-
applyAsInt
public int applyAsInt(int dummy)
Equivalent to nextInt(). This has the effect that distributions can now be used as function objects, returning a random number upon function evaluation.- Specified by:
applyAsInt
in interfaceIntUnaryOperator
-
clone
public Object clone()
Returns a deep copy of the receiver; the copy will produce identical sequences. After this call has returned, the copy and the receiver have equal but separate state.- Returns:
- a copy of the receiver.
-
getRandomGenerator
protected RandomEngine getRandomGenerator()
Returns the used uniform random number generator;- Returns:
- result
-
makeDefaultGenerator
public static RandomEngine makeDefaultGenerator()
Constructs and returns a new uniform random number generation engine seeded with the current time. Currently this isMersenneTwister
.- Returns:
- result
-
nextInt
public int nextInt()
Returns a random number from the distribution; returns (int) Math.round(nextDouble()). Override this method if necessary.- Returns:
- result
-
-