nag_random_beta (g05fec) (PDF version)
g05 Chapter Contents
g05 Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_random_beta (g05fec)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_random_beta (g05fec) generates a vector of pseudorandom variates from a beta distribution with arguments a  and b .

2  Specification

#include <nag.h>
#include <nagg05.h>
void  nag_random_beta (double a, double b, Integer n, double x[], NagError *fail)

3  Description

The beta distribution has PDF (probability density function):
f x = Γ a+b Γ a Γ b x a-1 1-x b-1 if ​ 0 x 1 ; a , b > 0.0 f x = 0 otherwise.
One of four algorithms is used to generate the variates depending on the values of a  and b . Let α  be the maximum and β  be the minimum of a  and b . Then the algorithms are as follows:
If α<0.5  
Jöhnk's algorithm is used, see for example Dagpunar (1988). This generates the beta variate as u 1 1/a / u 1 1/a + u 2 1/b , where u 1  and u 2  are uniformly distributed random variates.
If β>1  
The algorithm BB given by Cheng (1978) is used. This involves the generation of an observation from a beta distribution of the second kind by the envelope rejection method using a log-logistic target distribution and then transforming it to a beta variate.
If α>1  and β<1  
The switching algorithm given by Atkinson (1979) is used. The two target distributions used are f 1 x = β x β  and f 2 x = α 1-x β-1 , along with the approximation to the switching argument of t = 1-β / α + 1 - β .
In all other cases
Cheng's BC algorithm, see Cheng (1978), is used with modifications suggested by Dagpunar (1988). This algorithm is similar to BB, used when β>1 , but is tuned for small values of a  and b .

4  References

Atkinson A C (1979) A family of switching algorithms for the computer generation of beta random variates Biometrika 66 141–5
Cheng R C H (1978) Generating beta variates with nonintegral shape parameters Comm. ACM 21 317–322
Dagpunar J (1988) Principles of Random Variate Generation Oxford University Press
Hastings N A J and Peacock J B (1975) Statistical Distributions Butterworth

5  Arguments

1:     adoubleInput
On entry: the argument, a , of the beta distribution.
Constraint: a>0.0 .
2:     bdoubleInput
On entry: the argument, b , of the beta distribution.
Constraint: b>0.0 .
3:     nIntegerInput
On entry: the number, n , of pseudorandom numbers to be generated.
Constraint: n1 .
4:     x[n]doubleOutput
On exit: the n  pseudorandom variates from the specified beta distribution.
5:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_INT_ARG_LE
On entry, n=value.
Constraint: n>0.
NE_REAL_ARG_LE
On entry, a must not be less than or equal to 0.0: a=value .
On entry, b must not be less than or equal to 0.0: b=value .

7  Accuracy

Not applicable.

8  Further Comments

To generate an observation, y , from the beta distribution of the second kind from an observation, x , generated by nag_random_beta (g05fec) the transformation, y = x / 1-x , may be used.
To generate an observation, y , from an F -distribution with degrees of freedom v 1  and v 2  generate an observation from the beta distribution with arguments v 1 / 2  and v 2 / 2  and use the transformation y = v 2 x / v 1 1-x .

9  Example

The example program prints a set of five pseudorandom variates from a beta distribution with arguments a=2.0  and b=2.0 , generated by nag_random_beta (g05fec) after initialization by nag_random_init_repeatable (g05cbc).

9.1  Program Text

Program Text (g05fece.c)

9.2  Program Data

None.

9.3  Program Results

Program Results (g05fece.r)


nag_random_beta (g05fec) (PDF version)
g05 Chapter Contents
g05 Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012