g05 Chapter Contents
g05 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_rand_von_mises (g05src)

## 1  Purpose

nag_rand_von_mises (g05src) generates a vector of pseudorandom numbers from a von Mises distribution with concentration parameter $\kappa$.

## 2  Specification

 #include #include
 void nag_rand_von_mises (Integer n, double vk, Integer state[], double x[], NagError *fail)

## 3  Description

The von Mises distribution is a symmetric distribution used in the analysis of circular data. The PDF (probability density function) of this distribution on the circle with mean direction ${\mu }_{0}=0$ and concentration parameter $\kappa$, can be written as:
 $fθ= eκcos⁡θ 2πI0κ ,$
where $\theta$ is reduced modulo $2\pi$ so that $-\pi \le \theta <\pi$ and $\kappa \ge 0$. For very small $\kappa$ the distribution is almost the uniform distribution, whereas for $\kappa \to \infty$ all the probability is concentrated at one point.
The $n$ variates, ${\theta }_{1},{\theta }_{2},\dots ,{\theta }_{n}$, are generated using an envelope rejection method with a wrapped Cauchy target distribution as proposed by Best and Fisher (1979) and described by Dagpunar (1988).
One of the initialization functions nag_rand_init_repeatable (g05kfc) (for a repeatable sequence if computed sequentially) or nag_rand_init_nonrepeatable (g05kgc) (for a non-repeatable sequence) must be called prior to the first call to nag_rand_von_mises (g05src).

## 4  References

Best D J and Fisher N I (1979) Efficient simulation of the von Mises distribution Appl. Statist. 28 152–157
Dagpunar J (1988) Principles of Random Variate Generation Oxford University Press
Mardia K V (1972) Statistics of Directional Data Academic Press

## 5  Arguments

1:     nIntegerInput
On entry: $n$, the number of pseudorandom numbers to be generated.
Constraint: ${\mathbf{n}}\ge 0$.
2:     vkdoubleInput
On entry: $\kappa$, the concentration parameter of the required von Mises distribution.
Constraint: $0.0<{\mathbf{vk}}\le \sqrt{{\mathbf{nag_real_largest_number}}}/2.0$.
3:     state[$\mathit{dim}$]IntegerCommunication Array
Note: the actual argument supplied must be the array state supplied to the initialization functions nag_rand_init_repeatable (g05kfc) or nag_rand_init_nonrepeatable (g05kgc).
On entry: contains information on the selected base generator and its current state.
On exit: contains updated information on the state of the generator.
4:     x[n]doubleOutput
On exit: the $n$ pseudorandom numbers from the specified von Mises distribution.
5:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INT
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}\ge 0$.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NE_INVALID_STATE
On entry, state vector has been corrupted or not initialized.
NE_REAL
On entry, ${\mathbf{vk}}\le 0.0$ or vk too large: ${\mathbf{vk}}=〈\mathit{\text{value}}〉$.

## 7  Accuracy

Not applicable.

For a given number of random variates the generation time increases slightly with increasing $\kappa$.

## 9  Example

This example prints the first five pseudorandom numbers from a von Mises distribution with $\kappa =1.0$, generated by a single call to nag_rand_von_mises (g05src), after initialization by nag_rand_init_repeatable (g05kfc).

### 9.1  Program Text

Program Text (g05srce.c)

None.

### 9.3  Program Results

Program Results (g05srce.r)