T
- type of the elements in the sample space.public class EnumeratedDistribution<T> extends Object implements 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 |
---|---|
protected RandomGenerator |
random
RNG instance used to generate samples from the distribution.
|
Constructor and Description |
---|
EnumeratedDistribution(List<Pair<T,Double>> pmf)
Create an enumerated distribution using the given probability mass function
enumeration.
|
EnumeratedDistribution(RandomGenerator rng,
List<Pair<T,Double>> pmf)
Create an enumerated distribution using the given random number generator
and probability mass function enumeration.
|
Modifier and Type | Method and Description |
---|---|
List<Pair<T,Double>> |
getPmf()
Return the probability mass function as a list of
|
void |
reseedRandomGenerator(long seed)
Reseed the random generator used to generate samples.
|
T |
sample()
Generate a random value sampled from this distribution.
|
Object[] |
sample(int sampleSize)
Generate a random sample from the distribution.
|
T[] |
sample(int sampleSize,
T[] array)
Generate a random sample from the distribution.
|
protected final RandomGenerator random
public EnumeratedDistribution(List<Pair<T,Double>> pmf) throws NotPositiveException, MathArithmeticException, NotFiniteNumberException, NotANumberException
Note: this constructor will implicitly create an instance of
Well19937c
as random generator to be used for sampling only (see
sample()
and sample(int)
). In case no sampling is
needed for the created distribution, it is advised to pass null
as random generator via the appropriate constructors to avoid the
additional initialisation overhead.
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, List<Pair<T,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 seedpublic List<Pair<T,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 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 © 2003–2016 The Apache Software Foundation. All rights reserved.