T
- type of the elements in the sample space.public class EnumeratedDistribution<T>
extends java.lang.Object
implements java.io.Serializable
A generic implementation of a discrete probability distribution (Wikipedia) over a finite sample space, based on an enumerated list of <value, probability> pairs. Input probabilities must all be non-negative, but zero values are allowed and their sum does not have to equal one. Constructors will normalize input probabilities to make them sum to one.
The list of
Modifier and Type | Field and Description |
---|---|
private double[] |
probabilities
Probabilities of respective random variable values.
|
protected RandomGenerator |
random
RNG instance used to generate samples from the distribution.
|
private static long |
serialVersionUID
Serializable UID.
|
private java.util.List<T> |
singletons
List of random variable values.
|
Constructor and Description |
---|
EnumeratedDistribution(java.util.List<Pair<T,java.lang.Double>> pmf)
Create an enumerated distribution using the given probability mass function
enumeration.
|
EnumeratedDistribution(RandomGenerator rng,
java.util.List<Pair<T,java.lang.Double>> pmf)
Create an enumerated distribution using the given random number generator
and probability mass function enumeration.
|
Modifier and Type | Method and Description |
---|---|
java.util.List<Pair<T,java.lang.Double>> |
getPmf()
Return the probability mass function as a list of
|
(package private) double |
probability(T x)
For a random variable
X whose values are distributed according to
this distribution, this method returns P(X = x) . |
void |
reseedRandomGenerator(long seed)
Reseed the random generator used to generate samples.
|
T |
sample()
Generate a random value sampled from this distribution.
|
java.lang.Object[] |
sample(int sampleSize)
Generate a random sample from the distribution.
|
T[] |
sample(int sampleSize,
T[] array)
Generate a random sample from the distribution.
|
private static final long serialVersionUID
protected final RandomGenerator random
private final java.util.List<T> singletons
private final double[] probabilities
public EnumeratedDistribution(java.util.List<Pair<T,java.lang.Double>> pmf) throws NotPositiveException, MathArithmeticException, NotFiniteNumberException, NotANumberException
pmf
- probability mass function enumerated as a list of NotPositiveException
- if any of the probabilities are negative.NotFiniteNumberException
- if any of the probabilities are infinite.NotANumberException
- if any of the probabilities are NaN.MathArithmeticException
- all of the probabilities are 0.public EnumeratedDistribution(RandomGenerator rng, java.util.List<Pair<T,java.lang.Double>> pmf) throws NotPositiveException, MathArithmeticException, NotFiniteNumberException, NotANumberException
rng
- random number generator.pmf
- probability mass function enumerated as a list of NotPositiveException
- if any of the probabilities are negative.NotFiniteNumberException
- if any of the probabilities are infinite.NotANumberException
- if any of the probabilities are NaN.MathArithmeticException
- all of the probabilities are 0.public void reseedRandomGenerator(long seed)
seed
- the new seeddouble probability(T x)
For a random variable X
whose values are distributed according to
this distribution, this method returns P(X = x)
. In other words,
this method represents the probability mass function (PMF) for the
distribution.
Note that if x1
and x2
satisfy x1.equals(x2)
,
or both are null, then probability(x1) = probability(x2)
.
x
- the point at which the PMF is evaluatedx
public java.util.List<Pair<T,java.lang.Double>> getPmf()
Return the probability mass function as a list of
Note that if duplicate and / or null values were provided to the constructor when creating this EnumeratedDistribution, the returned list will contain these values. If duplicates values exist, what is returned will not represent a pmf (i.e., it is up to the caller to consolidate duplicate mass points).
public T sample()
public java.lang.Object[] sample(int sampleSize) throws NotStrictlyPositiveException
sampleSize
- the number of random values to generate.NotStrictlyPositiveException
- if sampleSize
is not
positive.public T[] sample(int sampleSize, T[] array) throws NotStrictlyPositiveException
If the requested samples fit in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this collection.
sampleSize
- the number of random values to generate.array
- the array to populate.NotStrictlyPositiveException
- if sampleSize
is not positive.NullArgumentException
- if array
is nullCopyright (c) 2003-2014 Apache Software Foundation