g05 Chapter Contents
g05 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_rngs_discrete_uniform (g05mac)

## 1  Purpose

nag_rngs_discrete_uniform (g05mac) generates a vector of pseudorandom integers uniformly distributed over the interval $\left[a,b\right]$.

## 2  Specification

 #include #include
 void nag_rngs_discrete_uniform (Integer a, Integer b, Integer n, Integer x[], Integer igen, Integer iseed[], NagError *fail)

## 3  Description

nag_rngs_discrete_uniform (g05mac) generates the next $n$ values ${y}_{i}$ from a uniform $\left(0,1\right)$ generator (see nag_rngs_basic (g05kac) for details) and applies the transformation
 $xi=a+b-a+1yi,$
where $\left[z\right]$ is the integer part of the real value $z$. The function ensures that the values ${x}_{i}$ lie in the closed interval $\left[a,b\right]$.
One of the initialization functions nag_rngs_init_repeatable (g05kbc) (for a repeatable sequence if computed sequentially) or nag_rngs_init_nonrepeatable (g05kcc) (for a non-repeatable sequence) must be called prior to the first call to nag_rngs_discrete_uniform (g05mac).

## 4  References

Knuth D E (1981) The Art of Computer Programming (Volume 2) (2nd Edition) Addison–Wesley

## 5  Arguments

1:     aIntegerInput
2:     bIntegerInput
On entry: the end points $a$ and $b$ of the uniform distribution.
Constraint: ${\mathbf{a}}\le {\mathbf{b}}$.
3:     nIntegerInput
On entry: $n$, the number of pseudorandom numbers to be generated.
Constraint: ${\mathbf{n}}\ge 0$.
4:     x[n]IntegerOutput
On exit: the $n$ pseudorandom numbers from the specified uniform distribution.
5:     igenIntegerInput
On entry: must contain the identification number for the generator to be used to return a pseudorandom number and should remain unchanged following initialization by a prior call to nag_rngs_init_repeatable (g05kbc) or nag_rngs_init_nonrepeatable (g05kcc).
6:     iseed[$4$]IntegerCommunication Array
On entry: contains values which define the current state of the selected generator.
On exit: contains updated values defining the new state of the selected generator.
7:     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_INT_2
On entry, ${\mathbf{a}}=〈\mathit{\text{value}}〉$ and ${\mathbf{b}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{b}}\ge {\mathbf{a}}$.
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.

Not applicable.

None.

## 9  Example

This example prints five pseudorandom integers from a discrete uniform distribution between $-5$ and $5$, generated by a single call to nag_rngs_discrete_uniform (g05mac), after initialization by nag_rngs_init_repeatable (g05kbc).

### 9.1  Program Text

Program Text (g05mace.c)

None.

### 9.3  Program Results

Program Results (g05mace.r)