public class ZipfDistribution extends AbstractIntegerDistribution
Parameters:
For a random variable X
whose values are distributed according to this
distribution, the probability mass function is given by
P(X = k) = H(N,s) * 1 / k^s for k = 1,2,...,N
.
H(N,s)
is the normalizing constant
which corresponds to the generalized harmonic number of order N of s.
N
is the number of elementss
is the exponentrandom, 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) . |
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 |
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. |
double |
probability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X = x) . |
int |
sample()
Generate a random value sampled from this distribution.
|
cumulativeProbability, inverseCumulativeProbability, reseedRandomGenerator, sample, solveInverseCumulativeProbability
public ZipfDistribution(int numberOfElements, double exponent)
Note: this constructor will implicitly create an instance of
Well19937c
as random generator to be used for sampling only (see
sample()
and AbstractIntegerDistribution.sample(int)
). In case no sampling is
needed for the created distribution, it is advised to pass null
as random generator via the appropriate constructors to avoid the
additional initialisation overhead.
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 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. In other words, this method
represents the logarithm of the probability mass function (PMF) for the
distribution. Note that due to the floating point precision and
under/overflow issues, this method will for some distributions be more
precise and faster than computing the logarithm of
IntegerDistribution.probability(int)
.
The default implementation simply computes the logarithm of probability(x)
.
logProbability
in class AbstractIntegerDistribution
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()
.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
public int sample()
sample
in interface IntegerDistribution
sample
in class AbstractIntegerDistribution
Copyright © 2003–2016 The Apache Software Foundation. All rights reserved.