Class EnumeratedDistribution<T>

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

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 invalid input: '<'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:
  • Field Details

    • random

      protected final RandomGenerator random
      RNG instance used to generate samples from the distribution.
  • Constructor Details

  • Method Details

    • reseedRandomGenerator

      public void reseedRandomGenerator(long seed)
      Reseed the random generator used to generate samples.
      Parameters:
      seed - the new seed
    • getPmf

      public List<Pair<T,Double>> getPmf()

      Return the probability mass function as a list of invalid input: '<'value, probability> pairs.

      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).

      Returns:
      the probability mass function.
    • sample

      public T sample()
      Generate a random value sampled from this distribution.
      Returns:
      a random value.
    • sample

      public Object[] sample(int sampleSize) throws NotStrictlyPositiveException
      Generate a random sample from the distribution.
      Parameters:
      sampleSize - the number of random values to generate.
      Returns:
      an array representing the random sample.
      Throws:
      NotStrictlyPositiveException - if sampleSize is not positive.
    • sample

      public T[] sample(int sampleSize, T[] array) throws NotStrictlyPositiveException
      Generate a random sample from the distribution.

      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.

      Parameters:
      sampleSize - the number of random values to generate.
      array - the array to populate.
      Returns:
      an array representing the random sample.
      Throws:
      NotStrictlyPositiveException - if sampleSize is not positive.
      NullArgumentException - if array is null