public class ZipfDistribution extends AbstractIntegerDistribution
Modifier and Type | Field and Description |
---|---|
private double |
exponent
Exponent parameter of the distribution.
|
private int |
numberOfElements
Number of elements.
|
private double |
numericalMean
Cached numerical mean
|
private boolean |
numericalMeanIsCalculated
Whether or not the numerical mean has been calculated
|
private double |
numericalVariance
Cached numerical variance
|
private boolean |
numericalVarianceIsCalculated
Whether or not the numerical variance has been calculated
|
private static long |
serialVersionUID
Serializable version identifier.
|
random, randomData
Constructor and Description |
---|
ZipfDistribution(int numberOfElements,
double exponent)
Create a new Zipf distribution with the given number of elements and
exponent.
|
ZipfDistribution(RandomGenerator rng,
int numberOfElements,
double exponent)
Creates a Zipf distribution.
|
Modifier and Type | Method and Description |
---|---|
protected double |
calculateNumericalMean()
Used by
getNumericalMean() . |
protected double |
calculateNumericalVariance()
Used by
getNumericalVariance() . |
double |
cumulativeProbability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X <= x) . |
private double |
generalizedHarmonic(int n,
double m)
Calculates the Nth generalized harmonic number.
|
double |
getExponent()
Get the exponent characterizing the distribution.
|
int |
getNumberOfElements()
Get the number of elements (e.g.
|
double |
getNumericalMean()
Use this method to get the numerical value of the mean of this
distribution.
|
double |
getNumericalVariance()
Use this method to get the numerical value of the variance of this
distribution.
|
int |
getSupportLowerBound()
Access the lower bound of the support.
|
int |
getSupportUpperBound()
Access the upper bound of the support.
|
boolean |
isSupportConnected()
Use this method to get information about whether the support is
connected, i.e.
|
double |
probability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X = x) . |
cumulativeProbability, inverseCumulativeProbability, reseedRandomGenerator, sample, sample, solveInverseCumulativeProbability
private static final long serialVersionUID
private final int numberOfElements
private final double exponent
private double numericalMean
private boolean numericalMeanIsCalculated
private double numericalVariance
private boolean numericalVarianceIsCalculated
public ZipfDistribution(int numberOfElements, double exponent)
numberOfElements
- Number of elements.exponent
- Exponent.NotStrictlyPositiveException
- if numberOfElements <= 0
or exponent <= 0
.public ZipfDistribution(RandomGenerator rng, int numberOfElements, double exponent) throws NotStrictlyPositiveException
rng
- Random number generator.numberOfElements
- Number of elements.exponent
- Exponent.NotStrictlyPositiveException
- if numberOfElements <= 0
or exponent <= 0
.public int getNumberOfElements()
public double getExponent()
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
- the point at which the PMF is evaluatedx
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
- the point at which the CDF is evaluatedx
public double getNumericalMean()
N
and exponent s
, the mean is
Hs1 / Hs
, where
Hs1 = generalizedHarmonic(N, s - 1)
,Hs = generalizedHarmonic(N, s)
.Double.NaN
if it is not definedprotected double calculateNumericalMean()
getNumericalMean()
.public double getNumericalVariance()
N
and exponent s
, the mean is
(Hs2 / Hs) - (Hs1^2 / Hs^2)
, where
Hs2 = generalizedHarmonic(N, s - 2)
,Hs1 = generalizedHarmonic(N, s - 1)
,Hs = generalizedHarmonic(N, s)
.Double.POSITIVE_INFINITY
or
Double.NaN
if it is not defined)protected double calculateNumericalVariance()
getNumericalVariance()
.private double generalizedHarmonic(int n, double m)
n
- Term in the series to calculate (must be larger than 1)m
- Exponent (special case m = 1
is the harmonic series).public int getSupportLowerBound()
inverseCumulativeProbability(0)
. In other words, this
method must return
inf {x in Z | P(X <= x) > 0}
.
public int getSupportUpperBound()
inverseCumulativeProbability(1)
. In other words, this
method must return
inf {x in R | P(X <= x) = 1}
.
public boolean isSupportConnected()
true
Copyright (c) 2003-2013 Apache Software Foundation