Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## umontreal.iro.lecuyer.probdist
Class DiscreteDistributionInt

    java.lang.Object
      umontreal.iro.lecuyer.probdist.DiscreteDistributionInt

All Implemented Interfaces:
  Distribution

Direct Known Subclasses:
  BinomialDist, GeometricDist, HypergeometricDist, LogarithmicDist, NegativeBinomialDist, PoissonDist, UniformIntDist

    public abstract class DiscreteDistributionInt

extends Object
implements Distribution

Classes implementing discrete distributions over the integers should inherit from this class. It specifies the signatures of methods for computing the mass function (or probability) p(x) = P[X = x], distribution function F(x), complementary distribution function bar(F)(x), and inverse distribution function F-1(u), for a random variable X with a discrete distribution over the integers.

The implementing classes provide both static and non-static methods to compute the above functions. The non-static methods require the creation of an object of class `DiscreteDistributionInt`; all the non-negligible terms of the mass and distribution functions will be precomputed by the constructor and kept in arrays. Subsequent accesses will be very fast. The static methods do not require the construction of an object. These static methods are not specified in this abstract class because the number and types of their parameters depend on the distribution. When methods have to be called several times with the same parameters for the distributions, it is usually more efficient to create an object and use its non-static methods instead of the static ones. This trades memory for speed.

Field Summary
`static double` | `EPSILON` Environment variable that determines what probability terms can be considered as negligible when building precomputed tables for distribution and mass functions.

Constructor Summary
`DiscreteDistributionInt()`

Method Summary
`double` | `barF(double x)` Returns bar(F)(x), the complementary distribution function.
`double` | `barF(int x)` Returns bar(F)(x), the complementary distribution function.
`double` | `cdf(double x)` Returns the distribution function F evaluated at `x` (see).
`abstract double` | `cdf(int x)` Returns the distribution function F evaluated at `x` (see).
`double` | `inverseF(double u)` Returns the inverse distribution function F-1(u), where 0 <= u <= 1.
`int` | `inverseFInt(double u)` Returns the inverse distribution function F-1(u), where 0 <= u <= 1.
`abstract double` | `prob(int x)` Returns p(x), the probability of x, which should be a real number in the interval [0, 1].

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface umontreal.iro.lecuyer.probdist.Distribution
`getMean, getParams, getStandardDeviation, getVariance`

Field Detail

### EPSILON

    public static double EPSILON

  Environment variable that determines what probability terms can be considered as negligible when building precomputed tables for distribution and mass functions. Probabilities smaller than `EPSILON` are not stored in the `DiscreteDistribution` objects (such as those of class `PoissonDist`, etc.), but are computed directly each time they are needed (which should be very seldom). The default value is set to 10-16.

Constructor Detail

### DiscreteDistributionInt

    public DiscreteDistributionInt()

Method Detail

### prob

    public abstract double prob(int x)

  Returns p(x), the probability of x, which should be a real number in the interval [0, 1].

  Parameters:
    `x` - value at which the mass function must be evaluated
  Returns:
    the mass function evaluated at `x`

### cdf

    public double cdf(double x)

  Returns the distribution function F evaluated at `x` (see). Calls the `cdf``(int)` method.

  Specified by:
    `cdf` in interface `Distribution`
  Parameters:
    `x` - value at which the distribution function must be evaluated
  Returns:
    the distribution function evaluated at `x`

### cdf

    public abstract double cdf(int x)

  Returns the distribution function F evaluated at `x` (see).

  Parameters:
    `x` - value at which the distribution function must be evaluated
  Returns:
    the distribution function evaluated at `x`

### barF

    public double barF(double x)

  Returns bar(F)(x), the complementary distribution function. Calls the `barF``(int)` method.

  Specified by:
    `barF` in interface `Distribution`
  Parameters:
    `x` - value at which the complementary distribution function must be evaluated
  Returns:
    the complementary distribution function evaluated at `x`

### barF

    public double barF(int x)

  Returns bar(F)(x), the complementary distribution function.

  Parameters:
    `x` - value at which the complementary distribution function must be evaluated
  Returns:
    the complementary distribution function evaluated at `x`

### inverseF

    public double inverseF(double u)

  Returns the inverse distribution function F-1(u), where 0 <= u <= 1. Calls the `inverseFInt` method.

  Specified by:
    `inverseF` in interface `Distribution`
  Parameters:
    `u` - value in the interval (0, 1) for which the inverse distribution function is evaluated
  Returns:
    the inverse distribution function evaluated at `u`
  Throws:
    `IllegalArgumentException` - if u is not in the interval (0, 1)
    `ArithmeticException` - if the inverse cannot be computed, for example if it would give infinity in a theoritical context

### inverseFInt

    public int inverseFInt(double u)

  Returns the inverse distribution function F-1(u), where 0 <= u <= 1. The default implementation uses binary search.

  Parameters:
    `u` - value in the interval (0, 1) for which the inverse distribution function is evaluated
  Returns:
    the inverse distribution function evaluated at `u`
  Throws:
    `IllegalArgumentException` - if u is not in the interval (0, 1)
    `ArithmeticException` - if the inverse cannot be computed, for example if it would give infinity in a theoritical context

Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.