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

## sim.util.distribution
Class Empirical

    java.lang.Object
      sim.util.distribution.AbstractDistribution
          sim.util.distribution.AbstractContinousDistribution
              sim.util.distribution.Empirical

All Implemented Interfaces:
  java.io.Serializable

    public class Empirical

extends AbstractContinousDistribution

Empirical distribution.

The probability distribution function (pdf) must be provided by the user as an array of positive real numbers. The pdf does not need to be provided in the form of relative probabilities, absolute probabilities are also accepted.

If `interpolationType == LINEAR_INTERPOLATION` a linear interpolation within the bin is computed, resulting in a constant density within each bin.

If `interpolationType == NO_INTERPOLATION` no interpolation is performed and the result is a discrete distribution.

Instance methods operate on a user supplied uniform random number generator; they are unsynchronized.

Static methods operate on a default uniform random number generator; they are synchronized.

Implementation: A uniform random number is generated using a user supplied generator. The uniform number is then transformed to the user's distribution using the cumulative probability distribution constructed from the pdf. The cumulative distribution is inverted using a binary search for the nearest bin boundary.

This is a port of RandGeneral used in CLHEP 1.4.0 (C++).

See Also:
  Serialized Form

Field Summary
`protected double[]` | `cdf`
`protected int` | `interpolationType`
`static int` | `LINEAR_INTERPOLATION`
`static int` | `NO_INTERPOLATION`

Fields inherited from class sim.util.distribution.AbstractDistribution
`randomGenerator`

Constructor Summary
`Empirical(double[] pdf, int interpolationType, MersenneTwisterFast randomGenerator)` Constructs an Empirical distribution.

Method Summary
`double` | `cdf(int k)` Returns the cumulative distribution function.
`double` | `nextDouble()` Returns a random number from the distribution.
`double` | `pdf(double x)` Returns the probability distribution function.
`double` | `pdf(int k)` Returns the probability distribution function.
`void` | `setState(double[] pdf, int interpolationType)` Sets the distribution parameters.
`java.lang.String` | `toString()` Returns a String representation of the receiver.

Methods inherited from class sim.util.distribution.AbstractDistribution
`apply, apply, getRandomGenerator, nextInt, setRandomGenerator`

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

Field Detail

### cdf

    protected double[] cdf

### interpolationType

    protected int interpolationType

### LINEAR_INTERPOLATION

    public static final int LINEAR_INTERPOLATION

See Also:
  Constant Field Values

### NO_INTERPOLATION

    public static final int NO_INTERPOLATION

See Also:
  Constant Field Values

Constructor Detail

### Empirical

    public Empirical(double[] pdf,
                     int interpolationType,
                     MersenneTwisterFast randomGenerator)

  Constructs an Empirical distribution. The probability distribution function (pdf) is an array of positive real numbers. It need not be provided in the form of relative probabilities, absolute probabilities are also accepted. The `pdf` must satisfy both of the following conditions
  - `0.0 <= pdf[i] : 0<=i<=pdf.length-1`
  - `0.0 < Sum(pdf[i]) : 0<=i<=pdf.length-1`

  Parameters:
    `pdf` - the probability distribution function.
    `interpolationType` - can be either `Empirical.NO_INTERPOLATION` or `Empirical.LINEAR_INTERPOLATION`.
    `randomGenerator` - a uniform random number generator.
  Throws:
    `java.lang.IllegalArgumentException` - if at least one of the three conditions above is violated.

Method Detail

### cdf

    public double cdf(int k)

  Returns the cumulative distribution function.

### nextDouble

    public double nextDouble()

  Returns a random number from the distribution.

  Specified by:
    `nextDouble` in class `AbstractDistribution`

### pdf

    public double pdf(double x)

  Returns the probability distribution function.

### pdf

    public double pdf(int k)

  Returns the probability distribution function.

### setState

    public void setState(double[] pdf,
                         int interpolationType)

  Sets the distribution parameters. The `pdf` must satisfy both of the following conditions
  - `0.0 <= pdf[i] : 0 < =i <= pdf.length-1`
  - `0.0 < Sum(pdf[i]) : 0 <=i <= pdf.length-1`

  Parameters:
    `pdf` - probability distribution function.
    `interpolationType` - can be either `Empirical.NO_INTERPOLATION` or `Empirical.LINEAR_INTERPOLATION`.
  Throws:
    `java.lang.IllegalArgumentException` - if at least one of the three conditions above is violated.

### toString

    public java.lang.String toString()

  Returns a String representation of the receiver.

  Overrides:
    `toString` in class `java.lang.Object`

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