public abstract class TrapezoidalDistribution extends Object
The probability density function of \( X \) is:
\[ f(x; a, b, c, d) = \begin{cases} \frac{2}{d+c-a-b}\frac{x-a}{b-a} & \text{for } a\le x \lt b \\ \frac{2}{d+c-a-b} & \text{for } b\le x \lt c \\ \frac{2}{d+c-a-b}\frac{d-x}{d-c} & \text{for } c\le x \le d \end{cases} \]
for \( -\infty \lt a \le b \le c \le d \lt \infty \) and \( x \in [a, d] \).
Note the special cases:
ContinuousDistribution.Sampler| Modifier and Type | Field and Description | 
|---|---|
protected double | 
a
Lower limit of this distribution (inclusive). 
 | 
protected double | 
b
Start of the trapezoid constant density. 
 | 
protected double | 
c
End of the trapezoid constant density. 
 | 
protected double | 
d
Upper limit of this distribution (inclusive). 
 | 
| Modifier and Type | Method and Description | 
|---|---|
ContinuousDistribution.Sampler | 
createSampler(UniformRandomProvider rng)
Creates a sampler. 
 | 
double | 
getB()
Gets the start of the constant region of the density function. 
 | 
double | 
getC()
Gets the end of the constant region of the density function. 
 | 
abstract double | 
getMean()
Gets the mean of this distribution. 
 | 
double | 
getSupportLowerBound()
Gets the lower bound of the support. 
 | 
double | 
getSupportUpperBound()
Gets the upper bound of the support. 
 | 
abstract double | 
getVariance()
Gets the variance of this distribution. 
 | 
double | 
inverseCumulativeProbability(double p)
Computes the quantile function of this distribution. 
 | 
double | 
inverseSurvivalProbability(double p)
Computes the inverse survival probability function of this distribution. 
 | 
static TrapezoidalDistribution | 
of(double a,
  double b,
  double c,
  double d)
Creates a trapezoidal distribution. 
 | 
double | 
probability(double x0,
           double x1)
For a random variable  
X whose values are distributed according
 to this distribution, this method returns P(x0 < X <= x1). | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcumulativeProbability, density, logDensity, survivalProbabilityprotected final double a
protected final double b
protected final double c
protected final double d
public static TrapezoidalDistribution of(double a, double b, double c, double d)
The distribution density is represented as an up sloping line from
 a to b, constant from b to c, and then a down
 sloping line from c to d.
a - Lower limit of this distribution (inclusive).b - Start of the trapezoid constant density (first shape parameter).c - End of the trapezoid constant density (second shape parameter).d - Upper limit of this distribution (inclusive).IllegalArgumentException - if a >= d, if b < a, if
 c < b or if c > d.public abstract double getMean()
For lower limit \( a \), start of the density constant region \( b \), end of the density constant region \( c \) and upper limit \( d \), the mean is:
\[ \frac{1}{3(d+c-b-a)}\left(\frac{d^3-c^3}{d-c}-\frac{b^3-a^3}{b-a}\right) \]
public abstract double getVariance()
For lower limit \( a \), start of the density constant region \( b \), end of the density constant region \( c \) and upper limit \( d \), the variance is:
\[ \frac{1}{6(d+c-b-a)}\left(\frac{d^4-c^4}{d-c}-\frac{b^4-a^4}{b-a}\right) - \mu^2 \]
where \( \mu \) is the mean.
public double getB()
This is the first shape parameter b of the distribution.
bpublic double getC()
This is the second shape parameter c of the distribution.
cpublic double getSupportLowerBound()
inverseCumulativeProbability(0), i.e.
 \( \inf \{ x \in \mathbb R : P(X \le x) \gt 0 \} \).
 The lower bound of the support is equal to the lower limit parameter
 a of the distribution.
public double getSupportUpperBound()
inverseCumulativeProbability(1), i.e.
 \( \inf \{ x \in \mathbb R : P(X \le x) = 1 \} \).
 The upper bound of the support is equal to the upper limit parameter
 d of the distribution.
public double probability(double x0, double 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)probability in interface ContinuousDistributionx0 - Lower bound (exclusive).x1 - Upper bound (inclusive).x0 and x1,  excluding the lower
 and including the upper endpoint.public double inverseCumulativeProbability(double p)
X distributed according to this distribution, the
 returned value is:
 \[ x = \begin{cases} \inf \{ x \in \mathbb R : P(X \le x) \ge p\} & \text{for } 0 \lt p \le 1 \\ \inf \{ x \in \mathbb R : P(X \le x) \gt 0 \} & \text{for } p = 0 \end{cases} \]
The default implementation returns:
ContinuousDistribution.getSupportLowerBound() for p = 0,ContinuousDistribution.getSupportUpperBound() for p = 1, orcumulativeProbability(x) - p.
     The bounds may be bracketed for efficiency.inverseCumulativeProbability in interface ContinuousDistributionp - Cumulative probability.p-quantile of this distribution
 (largest 0-quantile for p = 0).IllegalArgumentException - if p < 0 or p > 1public double inverseSurvivalProbability(double p)
X distributed according to this distribution, the
 returned value is:
 \[ x = \begin{cases} \inf \{ x \in \mathbb R : P(X \ge x) \le p\} & \text{for } 0 \le p \lt 1 \\ \inf \{ x \in \mathbb R : P(X \ge x) \lt 1 \} & \text{for } p = 1 \end{cases} \]
By default, this is defined as inverseCumulativeProbability(1 - p), but
 the specific implementation may be more accurate.
 
The default implementation returns:
ContinuousDistribution.getSupportLowerBound() for p = 1,ContinuousDistribution.getSupportUpperBound() for p = 0, orsurvivalProbability(x) - p.
     The bounds may be bracketed for efficiency.inverseSurvivalProbability in interface ContinuousDistributionp - Survival probability.(1-p)-quantile of this distribution
 (largest 0-quantile for p = 1).IllegalArgumentException - if p < 0 or p > 1public ContinuousDistribution.Sampler createSampler(UniformRandomProvider rng)
createSampler in interface ContinuousDistributionrng - Generator of uniformly distributed numbers.Copyright © 2018–2022 The Apache Software Foundation. All rights reserved.