public final class UniformDiscreteDistribution extends Object
The probability mass function of \( X \) is:
\[ f(k; a, b) = \frac{1}{b-a+1} \]
for integer \( a, b \) and \( a \le b \) and \( k \in [a, b] \).
DiscreteDistribution.Sampler
Modifier and Type | Method and Description |
---|---|
DiscreteDistribution.Sampler |
createSampler(UniformRandomProvider rng)
Creates a sampler.
|
double |
cumulativeProbability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X <= x) . |
double |
getMean()
Gets the mean of this distribution.
|
int |
getSupportLowerBound()
Gets the lower bound of the support.
|
int |
getSupportUpperBound()
Gets the upper bound of the support.
|
double |
getVariance()
Gets the variance of this distribution.
|
int |
inverseCumulativeProbability(double p)
Computes the quantile function of this distribution.
|
int |
inverseSurvivalProbability(double p)
Computes the inverse survival probability function of this distribution.
|
double |
logProbability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns log(P(X = x)) , where
log is the natural logarithm. |
static UniformDiscreteDistribution |
of(int lower,
int upper)
Creates a new uniform discrete distribution.
|
double |
probability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X = x) . |
double |
probability(int x0,
int x1)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(x0 < X <= x1) . |
double |
survivalProbability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X > x) . |
public static UniformDiscreteDistribution of(int lower, int upper)
lower
- Lower bound (inclusive) of this distribution.upper
- Upper bound (inclusive) of this distribution.IllegalArgumentException
- if lower > upper
.public double probability(int x)
X
whose values are distributed according
to this distribution, this method returns P(X = x)
.
In other words, this method represents the probability mass function (PMF)
for the distribution.x
- Point at which the PMF is evaluated.x
.public double probability(int x0, int x1)
X
whose values are distributed according
to this distribution, this method returns P(x0 < X <= x1)
.
The default implementation uses the identity
P(x0 < X <= x1) = P(X <= x1) - P(X <= x0)
Special cases:
0.0
if x0 == x1
;
probability(x1)
if x0 + 1 == x1
;
probability
in interface DiscreteDistribution
x0
- Lower bound (exclusive).x1
- Upper bound (inclusive).x0
and x1
, excluding the lower
and including the upper endpoint.public double logProbability(int x)
X
whose values are distributed according
to this distribution, this method returns log(P(X = x))
, where
log
is the natural logarithm.x
- Point at which the PMF is evaluated.x
.public double cumulativeProbability(int x)
X
whose values are distributed according
to this distribution, this method returns P(X <= x)
.
In other, words, this method represents the (cumulative) distribution
function (CDF) for this distribution.x
- Point at which the CDF is evaluated.x
.public double survivalProbability(int x)
X
whose values are distributed according
to this distribution, this method returns P(X > x)
.
In other words, this method represents the complementary cumulative
distribution function.
By default, this is defined as 1 - cumulativeProbability(x)
, but
the specific implementation may be more accurate.
x
- Point at which the survival function is evaluated.x
.public int inverseCumulativeProbability(double p)
X
distributed according to this distribution,
the returned value is:
\[ x = \begin{cases} \inf \{ x \in \mathbb Z : P(X \le x) \ge p\} & \text{for } 0 \lt p \le 1 \\ \inf \{ x \in \mathbb Z : P(X \le x) \gt 0 \} & \text{for } p = 0 \end{cases} \]
If the result exceeds the range of the data type int
,
then Integer.MIN_VALUE
or Integer.MAX_VALUE
is returned.
In this case the result of cumulativeProbability(x)
called using the returned p
-quantile may not compute the original p
.
The default implementation returns:
DiscreteDistribution.getSupportLowerBound()
for p = 0
,DiscreteDistribution.getSupportUpperBound()
for p = 1
, orcumulativeProbability(x)
.
The bounds may be bracketed for efficiency.inverseCumulativeProbability
in interface DiscreteDistribution
p
- Cumulative probability.p
-quantile of this distribution
(largest 0-quantile for p = 0
).public int inverseSurvivalProbability(double p)
X
distributed according to this distribution,
the returned value is:
\[ x = \begin{cases} \inf \{ x \in \mathbb Z : P(X \ge x) \le p\} & \text{for } 0 \le p \lt 1 \\ \inf \{ x \in \mathbb Z : P(X \ge x) \lt 1 \} & \text{for } p = 1 \end{cases} \]
If the result exceeds the range of the data type int
,
then Integer.MIN_VALUE
or Integer.MAX_VALUE
is returned.
In this case the result of survivalProbability(x)
called using the returned (1-p)
-quantile may not compute the original p
.
By default, this is defined as inverseCumulativeProbability(1 - p)
, but
the specific implementation may be more accurate.
The default implementation returns:
DiscreteDistribution.getSupportLowerBound()
for p = 1
,DiscreteDistribution.getSupportUpperBound()
for p = 0
, orsurvivalProbability(x)
.
The bounds may be bracketed for efficiency.inverseSurvivalProbability
in interface DiscreteDistribution
p
- Cumulative probability.(1-p)
-quantile of this distribution
(largest 0-quantile for p = 1
).public double getMean()
For lower bound \( a \) and upper bound \( b \), the mean is \( \frac{1}{2} (a + b) \).
public double getVariance()
For lower bound \( a \) and upper bound \( b \), the variance is:
\[ \frac{1}{12} (n^2 - 1) \]
where \( n = b - a + 1 \).
public int getSupportLowerBound()
inverseCumulativeProbability(0)
, i.e.
\( \inf \{ x \in \mathbb Z : P(X \le x) \gt 0 \} \).
By convention, Integer.MIN_VALUE
should be substituted
for negative infinity.
The lower bound of the support is equal to the lower bound parameter of the distribution.
public int getSupportUpperBound()
inverseCumulativeProbability(1)
, i.e.
\( \inf \{ x \in \mathbb Z : P(X \le x) = 1 \} \).
By convention, Integer.MAX_VALUE
should be substituted
for positive infinity.
The upper bound of the support is equal to the upper bound parameter of the distribution.
public DiscreteDistribution.Sampler createSampler(UniformRandomProvider rng)
createSampler
in interface DiscreteDistribution
rng
- Generator of uniformly distributed numbers.Copyright © 2018–2022 The Apache Software Foundation. All rights reserved.