Class EnumeratedDistribution<T>

java.lang.Object
org.apache.commons.math4.distribution.EnumeratedDistribution<T>
Type Parameters:
T - type of the elements in the sample space.
All Implemented Interfaces:
java.io.Serializable

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 <value, probability> pairs does not, strictly speaking, have to be a function and it can contain null values. The pmf created by the constructor will combine probabilities of equal values and will treat null values as equal. For example, if the list of pairs <"dog", 0.2>, <null, 0.1>, <"pig", 0.2>, <"dog", 0.1>, <null, 0.4> is provided to the constructor, the resulting pmf will assign mass of 0.5 to null, 0.3 to "dog" and 0.2 to null.

Since:
3.2
See Also:
Serialized Form
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    class  EnumeratedDistribution.Sampler
    Sampler functionality.
  • Constructor Summary

    Constructors 
    Constructor Description
    EnumeratedDistribution​(java.util.List<Pair<T,​java.lang.Double>> pmf)
    Create an enumerated distribution using the given random number generator and probability mass function enumeration.
  • Method Summary

    Modifier and Type Method Description
    EnumeratedDistribution.Sampler createSampler​(UniformRandomProvider rng)
    java.util.List<Pair<T,​java.lang.Double>> getPmf()
    Return the probability mass function as a list of <value, probability> pairs.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait