Class KnobDistribution
java.lang.Object
com.github.tommyettinger.random.distribution.Distribution
com.github.tommyettinger.random.distribution.KnobDistribution
- All Implemented Interfaces:
Externalizable
,Serializable
A three-parameter distribution with infinite range, which allows interpolating between a
This provides an extra "knob" to slide between a flat uniform distribution and a central-biased normal one.
normal distribution
and a uniform distribution
.
The first two parameters control mu and sigma for the normal distribution, and also affect alpha and beta for
the uniform one (though differently). The amount of interpolation is the third parameter, called iota here.
This provides an extra "knob" to slide between a flat uniform distribution and a central-biased normal one.
- See Also:
-
Field Summary
Fields inherited from class com.github.tommyettinger.random.distribution.Distribution
generator
-
Constructor Summary
ConstructorDescriptionUses anAceRandom
, mu = 0.0, sigma = 1.0, iota = 0.5 .KnobDistribution
(double mu, double sigma, double iota) Uses anAceRandom
and the given mu sigma, and iota.KnobDistribution
(EnhancedRandom generator, double mu, double sigma, double iota) Uses the given EnhancedRandom directly. -
Method Summary
Modifier and TypeMethodDescriptioncopy()
Returns an exact copy of this Distribution, with the same parameters and a copy of the generator.double
getIota()
double
Gets the maximum possible value of distributed random numbers.double
getMean()
Gets the mean of distributed random numbers.double
Gets the median of distributed random numbers.double
Gets the minimum possible value of distributed random numbers.double[]
getMode()
Gets the mode(s) of distributed random numbers.double
getMu()
double
Gets the value of parameter "A" as a double.double
Gets the value of parameter "B" as a double.double
Gets the value of parameter "C" as a double.double
getSigma()
getTag()
Gets the tag used to identify this type of Distribution, as a String.double
Gets the variance of distributed random numbers.double
Generates a double using this distribution.static double
sample
(EnhancedRandom generator, double mu, double sigma, double iota) boolean
setParameters
(double a, double b, double c) Sets all parameters and returns true if they are valid, otherwise leaves parameters unchanged and returns false.Methods inherited from class com.github.tommyettinger.random.distribution.Distribution
equals, readExternal, stringDeserialize, stringDeserialize, stringSerialize, stringSerialize, toString, writeExternal
-
Constructor Details
-
KnobDistribution
public KnobDistribution()Uses anAceRandom
, mu = 0.0, sigma = 1.0, iota = 0.5 . -
KnobDistribution
public KnobDistribution(double mu, double sigma, double iota) Uses anAceRandom
and the given mu sigma, and iota. -
KnobDistribution
Uses the given EnhancedRandom directly. Uses the given mu, sigma, and iota.
-
-
Method Details
-
getTag
Description copied from class:Distribution
Gets the tag used to identify this type of Distribution, as a String. This tag should be unique. Unlike the tags for EnhancedRandom types, the names here can vary in length.- Specified by:
getTag
in classDistribution
- Returns:
- a unique String identifier for this type of Distribution; must be non-null, can be any non-zero length
-
copy
Description copied from class:Distribution
Returns an exact copy of this Distribution, with the same parameters and a copy of the generator.- Specified by:
copy
in classDistribution
- Returns:
- an exact copy of this Distribution
-
getMu
public double getMu() -
getSigma
public double getSigma() -
getIota
public double getIota() -
getParameterA
public double getParameterA()Description copied from class:Distribution
Gets the value of parameter "A" as a double. This corresponds to parameter "A" inDistribution.setParameters(double, double, double)
; it is usually called by some other name in the generator, and may not be stored as a double internally.
This defaults to always returningDouble.NaN
, but any parameters a distribution actually uses should be overridden to return the actual parameter, which is almost certainly not going to be NaN. If a getParameter method returns NaN, you can generally safely assume that the parameter is not used by this distribution.- Overrides:
getParameterA
in classDistribution
- Returns:
- the value of parameter "A" as a double.
-
getParameterB
public double getParameterB()Description copied from class:Distribution
Gets the value of parameter "B" as a double. This corresponds to parameter "B" inDistribution.setParameters(double, double, double)
; it is usually called by some other name in the generator, and may not be stored as a double internally.
This defaults to always returningDouble.NaN
, but any parameters a distribution actually uses should be overridden to return the actual parameter, which is almost certainly not going to be NaN. If a getParameter method returns NaN, you can generally safely assume that the parameter is not used by this distribution.- Overrides:
getParameterB
in classDistribution
- Returns:
- the value of parameter "B" as a double.
-
getParameterC
public double getParameterC()Description copied from class:Distribution
Gets the value of parameter "C" as a double. This corresponds to parameter "C" inDistribution.setParameters(double, double, double)
; it is usually called by some other name in the generator, and may not be stored as a double internally.
This defaults to always returningDouble.NaN
, but any parameters a distribution actually uses should be overridden to return the actual parameter, which is almost certainly not going to be NaN. If a getParameter method returns NaN, you can generally safely assume that the parameter is not used by this distribution.- Overrides:
getParameterC
in classDistribution
- Returns:
- the value of parameter "C" as a double.
-
getMaximum
public double getMaximum()Description copied from class:Distribution
Gets the maximum possible value of distributed random numbers.- Specified by:
getMaximum
in classDistribution
- Returns:
- the maximum possible value of distributed random numbers
-
getMean
public double getMean()Description copied from class:Distribution
Gets the mean of distributed random numbers.- Specified by:
getMean
in classDistribution
- Returns:
- the mean of distributed random numbers
-
getMedian
public double getMedian()Description copied from class:Distribution
Gets the median of distributed random numbers.- Specified by:
getMedian
in classDistribution
- Returns:
- the median of distributed random numbers
-
getMinimum
public double getMinimum()Description copied from class:Distribution
Gets the minimum possible value of distributed random numbers.- Specified by:
getMinimum
in classDistribution
- Returns:
- the minimum possible value of distributed random numbers
-
getMode
public double[] getMode()Description copied from class:Distribution
Gets the mode(s) of distributed random numbers.- Specified by:
getMode
in classDistribution
- Returns:
- the mode(s) of distributed random numbers
-
getVariance
public double getVariance()Description copied from class:Distribution
Gets the variance of distributed random numbers.- Specified by:
getVariance
in classDistribution
- Returns:
- the variance of distributed random numbers
-
setParameters
public boolean setParameters(double a, double b, double c) Sets all parameters and returns true if they are valid, otherwise leaves parameters unchanged and returns false.- Specified by:
setParameters
in classDistribution
- Parameters:
a
- mu; must not be NaNb
- sigma; should be greater than 0.0c
- iota; must be between 0.0 and 1.0, both inclusive- Returns:
- true if the parameters given are valid and will be used
-
nextDouble
public double nextDouble()Description copied from class:Distribution
Generates a double using this distribution.- Specified by:
nextDouble
in classDistribution
- Returns:
- a distributed double
-
sample
-