Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES

## Package umontreal.iro.lecuyer.randvar

This package provides a collection of classes for non-uniform random variate generation, primarily from standard distributions.

See:
Description

Class Summary
BetaGen | This class implements random variate generators with the beta distribution with shape parameters α > 0 and β > 0, over the interval (a, b), where a < b.
BetaRejectionLoglogisticGen | Implements Beta random variate generators using the rejection method with log-logistic envelopes.
BetaStratifiedRejectionGen | This class implements Beta random variate generators using the stratified rejection/patchwork rejection method.
BetaSymmetricalBestGen | This class implements symmetrical beta random variate generators using Devroye's one-liner method.
BetaSymmetricalGen | This class implements random variate generators with the symmetrical beta distribution with shape parameters α = β, over the interval (0, 1).
BetaSymmetricalPolarGen | This class implements symmetrical beta random variate generators using Ulrich's polar method.
BinomialConvolutionGen | Implements binomial random variate generators using the convolution method.
BinomialGen | This class implements random variate generators for the binomial distribution.
CauchyGen | This class implements random variate generators for the Cauchy distribution.
ChiGen | This class implements random variate generators for the chi distribution.
ChiRatioOfUniformsGen | This class implements Chi random variate generators using the ratio of uniforms method with shift.
ChiSquareGen | This class implements random variate generators with the chi square distribution with n > 0 degrees of freedom.
ChiSquareNoncentralGamGen | This class implements noncentral chi square random variate generators using the additive property of the noncentral chi square distribution.
ChiSquareNoncentralGen | This class implements random variate generators for the noncentral chi square distribution with ν degrees of freedom and noncentrality parameter λ.
ChiSquareNoncentralPoisGen | This class implements noncentral chi square random variate generators using Poisson and central chi square generators.
ErlangConvolutionGen | This class implements Erlang random variate generators using the convolution method.
ErlangGen | This class implements random variate generators for the Erlang distribution with parameters k > 0 and λ > 0.
ExponentialGen | This class implements random variate generators for the exponential distribution.
ExtremeValueGen | This class implements random variate generators for the Gumbel (or extreme value) distribution.
FatigueLifeGen | This class implements random variate generators for the fatigue life distribution with location parameter μ, scale parameter β and shape parameter γ.
FisherFGen | This class implements random variate generators for the Fisher F distribution with n and m degrees of freedom, where n and m are positive integers.
FoldedNormalGen | This class implements methods for generating random variates from the folded normal distribution with parameters μ >= 0 and σ > 0.
GammaAcceptanceRejectionGen | This class implements gamma random variate generators using a method that combines acceptance-rejection with acceptance-complement.
GammaGen | This class implements random variate generators for the gamma distribution.
GammaRejectionLoglogisticGen | This class implements gamma random variate generators using a rejection method with loglogistic envelopes,.
GeometricGen | This class implements a random variate generator for the geometric distribution.
HalfNormalGen | This class implements methods for generating random variates from the half-normal distribution with parameters μ and σ > 0.
HyperbolicSecantGen | This class implements random variate generators for the hyperbolic secant distribution with location parameter μ and scale parameter σ.
HypergeometricGen | This class implements random variate generators for the hypergeometric distribution.
InverseGaussianGen | This class implements random variate generators for the inverse Gaussian distribution with location parameter μ > 0 and scale parameter λ > 0.
InverseGaussianMSHGen | This class implements inverse gaussian random variate generators using the many-to-one transformation method of Michael, Schucany and Haas (MHS).
JohnsonSBGen | This class implements random variate generators for the Johnson SB distribution.
JohnsonSUGen | This class implements random variate generators for the Johnson SU distribution.
KernelDensityGen | This class implements random variate generators for distributions obtained via kernel density estimation methods from a set of n individual observations x1,..., xn.
KernelDensityVarCorrectGen | This class is a variant of `KernelDensityGen`, but with a rescaling of the empirical distribution so that the variance of the density used to generate the random variates is equal to the empirical variance, as suggested by Silverman.
LaplaceGen | This class implements methods for generating random variates from the Laplace distribution.
LogarithmicGen | This class implements random variate generators for the (discrete) logarithmic distribution.
LogisticGen | This class implements random variate generators for the logistic distribution.
LoglogisticGen | This class implements random variate generators for the log-logistic distribution with shape parameter α > 0 and scale parameter β > 0.
LognormalGen | This class implements methods for generating random variates from the lognormal distribution.
LognormalSpecialGen | Implements methods for generating random variates from the lognormal distribution using an arbitrary normal random variate generator.
NakagamiGen | This class implements random variate generators for the Nakagami distribution.
NegativeBinomialGen | This class implements random variate generators having the negative binomial distribution.
NormalACRGen | This class implements normal random variate generators using the acceptance-complement ratio method.
NormalBoxMullerGen | This class implements normal random variate generators using the Box-Muller method.
NormalGen | This class implements methods for generating random variates from the normal distribution N(μ, σ).
NormalInverseGaussianGen | This class implements random variate generators for the normal inverse gaussian (NIG) distribution.
NormalInverseGaussianIGGen | .
NormalKindermannRamageGen | This class implements normal random variate generators using the Kindermann-Ramage method.
NormalPolarGen | This class implements normal random variate generators using the polar method with rejection.
ParetoGen | This class implements random variate generators for one of the Pareto distributions, with parameters α > 0 and β > 0.
PascalConvolutionGen | Implements Pascal random variate generators by the convolution method.
PascalGen | Implements Pascal random variate generators, which is a special case of the negative binomial generator with parameter γ equal to a positive integer.
Pearson5Gen | This class implements random variate generators for the Pearson type V distribution with shape parameter α > 0 and scale parameter β > 0.
Pearson6Gen | This class implements random variate generators for the Pearson type VI distribution with shape parameters α1 > 0 and α2 > 0, and scale parameter β > 0.
PoissonGen | This class implements random variate generators having the Poisson distribution.
PoissonTIACGen | This class implements random variate generators having the Poisson distribution (see `PoissonGen`).
PowerGen | This class implements random variate generators for the power distribution with shape parameter c > 0, over the interval [a, b].
Rand1 | Deprecated. Use `RandomVariateGen` and `RandomVariateGenInt` instead.
RandomVariateGen | This is the base class for all random variate generators over the real line.
RandomVariateGenInt | This is the base class for all generators of discrete random variates over the set of integers.
RandomVariateGenWithCache | This class represents a random variate generator whose values are cached for more efficiency when using common random numbers.
RayleighGen | This class implements random variate generators for the Rayleigh distribution.
StudentGen | This class implements methods for generating random variates from the Student distribution with n > 0 degrees of freedom.
StudentPolarGen | This class implements Student random variate generators using the polar method of.
TriangularGen | This class implements random variate generators for the triangular distribution.
UniformGen | This class implements random variate generators for the (continuous) uniform distribution over the interval (a, b), where a and b are real numbers with a < b.
UniformIntGen | This class implements a random variate generator for the uniform distribution over integers, over the interval [i, j].
UnuranContinuous | This class permits one to create continuous univariate distribution using UNURAN via its string API.
UnuranDiscreteInt | This class permits one to create a discrete univariate distribution using UNURAN via its string API.
UnuranEmpirical | This class permits one to create generators for empirical and quasi-empirical univariate distributions using UNURAN via its string interface.
WeibullGen | This class implements random variate generators for the Weibull distribution.

Exception Summary
UnuranException | This type of unchecked exception is thrown when an error occurs inside the UNURAN package.

## Package umontreal.iro.lecuyer.randvar Description

This package provides a collection of classes for non-uniform random variate generation, primarily from standard distributions.

Each non-uniform random variate generator requires at least one `RandomStream` object (from package `rng`), used to generate the underlying uniform random numbers. The generic classes `RandomVariateGen` and `RandomVariateGenInt` permit one to construct a random variate generator from a random stream and an arbitrary distribution (from the package `Distribution`). To generate random variates by inversion from an arbitrary distribution over the real numbers, using a given random stream, it suffices to construct a `RandomVariateGen` object with the desired (previously created) `Distribution` and `RandomStream` objects, and then call its `nextDouble` method as many times as needed. For discrete distributions over the integers, one can construct a `RandomVariateGenInt` object that contains the desired `DiscreteDistributionInt` and `RandomStream`, and call its `nextInt` method. By default, these generators simply call the `inverseF` method from the specified distribution object. These two classes suffice as long as we are willing to use inversion.

To generate random variates by other methods than inversion, one can use specialized classes that extend `RandomVariateGen` or `RandomVariateGenInt`. Such classes are provided for a variety of standard discrete and continuous distributions. For example, five different subclasses implement normal random variate generators, using five different methods. One of them, the class `NormalGen`, extends `RandomVariateGen` directly and provides normal random variate generators based on inversion, so it does the same thing as using `RandomVariateGen` with the normal distribution. The others are subclasses of `NormalGen`; they implement various non-inversion normal variate generation methods. To generate random variates with a specific method, it suffices to construct an object of the appropriate subclass and then call its `nextDouble` method.

In most cases, the specialized classes maintain local copies of the distribution parameters and use them for variate generation. If the parameters of the contained distribution objects are later modified, this may lead to inconsistencies: the variate generator object will keep using the old values. In fact, the constructors of the specialized classes often precompute constants and tables based on these parameter values, which would have to be recomputed if the parameters are changed. On the other hand, the generic classes `RandomVariateGen` and `RandomVariateGenInt` call directly the `inverseF` method of the contained distribution object, so they will always use the new parameter values whenever the parameters in the distribution object are changed.

With some variate generation methods (e.g., the rejection method), the number of uniforms required to get a single non-uniform variate varies from one call to the next. In that case, an auxiliary stream is often used to preserve the synchronization between random variates when implementing variance-reduction methods. The main random number stream is called a fixed number of times per non-uniform variate generation. If more uniform random numbers are needed, they are obtained from the auxiliary stream. For these types of generators, two `RandomStream` objects should be passed to the constructor. Otherwise, by default, the same stream will be used for all uniforms.

Static methods in the specialized classes allow the generation of random variates from specific distributions without constructing a `RandomVariateGen` object.

This package also provides an interface to the UNURAN (Universal Non-Uniform RANdom number generators) package, a rich library of C functions designed and implemented by the ARVAG (Automatic Random VAriate Generation) project group in Vienna. This interface can be used to access distributions or generation methods not available directly in SSJ. To get a UNURAN generator, it suffices to instantiate one of the UNURAN interface classes: `UnuranDiscreteInt` for discrete random variates, `UnuranContinuous` for continuous ones (in one dimension), and `UnuranEmpirical` for quasi-empirical distributions based on experimental data. The type of distribution and its parameters are specified to UNURAN via its String API (see the UNURAN documentation). Only univariate distributions are supported because the UNURAN String API does not support the multivariate ones yet.

In the UNURAN interface classes, `nextDouble` and `nextInt` can be invoked as usual to generate variates, but these methods are slowed down significantly by the overhead in the interactions between code on the native side and on the Java side. When several random variates are needed, it is much more efficient to generate them in a single call, via the methods `nextArrayOfDouble` and `nextArrayOfInt`.

Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.