g05 Chapter Contents
g05 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_random_beta (g05fec)

## 1  Purpose

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

## 2  Specification

 #include #include
 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 $\alpha$ be the maximum and $\beta$ be the minimum of $a$ and $b$. Then the algorithms are as follows:
If $\alpha <0.5$
Jöhnk's algorithm is used, see for example Dagpunar (1988). This generates the beta variate as ${u}_{1}^{1/a}/\left({u}_{1}^{1/a}+{u}_{2}^{1/b}\right)$, where ${u}_{1}$ and ${u}_{2}$ are uniformly distributed random variates.
If $\beta >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 $\alpha >1$ and $\beta <1$
The switching algorithm given by Atkinson (1979) is used. The two target distributions used are ${f}_{1}\left(x\right)=\beta {x}^{\beta }$ and ${f}_{2}\left(x\right)=\alpha {\left(1-x\right)}^{\beta -1}$, along with the approximation to the switching argument of $t=\left(1-\beta \right)/\left(\alpha +1-\beta \right)$.
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 $\beta >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

On entry: the argument, $a$, of the beta distribution.
Constraint: ${\mathbf{a}}>0.0$.
2:     bdoubleInput
On entry: the argument, $b$, of the beta distribution.
Constraint: ${\mathbf{b}}>0.0$.
3:     nIntegerInput
On entry: the number, $n$, of pseudorandom numbers to be generated.
Constraint: ${\mathbf{n}}\ge 1$.
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, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}>0$.
NE_REAL_ARG_LE
On entry, a must not be less than or equal to 0.0: ${\mathbf{a}}=〈\mathit{\text{value}}〉$.
On entry, b must not be less than or equal to 0.0: ${\mathbf{b}}=〈\mathit{\text{value}}〉$.

## 7  Accuracy

Not applicable.

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/\left(1-x\right)$, 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}\left(1-x\right)$.

## 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)

None.

### 9.3  Program Results

Program Results (g05fece.r)