﻿ g05sg Method
g05sg generates a vector of pseudorandom numbers from an exponential mix distribution composed of $m$ exponential distributions each having a mean ${a}_{i}$ and weight ${w}_{i}$.

# Syntax

C#
```public static void g05sg(
int n,
int nmix,
double[] a,
double[] wgt,
G05..::..G05State g05state,
double[] x,
out int ifail
)```
Visual Basic
```Public Shared Sub g05sg ( _
n As Integer, _
nmix As Integer, _
a As Double(), _
wgt As Double(), _
g05state As G05..::..G05State, _
x As Double(), _
<OutAttribute> ByRef ifail As Integer _
)```
Visual C++
```public:
static void g05sg(
int n,
int nmix,
array<double>^ a,
array<double>^ wgt,
G05..::..G05State^ g05state,
array<double>^ x,
[OutAttribute] int% ifail
)```
F#
```static member g05sg :
n : int *
nmix : int *
a : float[] *
wgt : float[] *
g05state : G05..::..G05State *
x : float[] *
ifail : int byref -> unit
```

#### Parameters

n
Type: System..::..Int32
On entry: $n$, the number of pseudorandom numbers to be generated.
Constraint: ${\mathbf{n}}\ge 0$.
nmix
Type: System..::..Int32
On entry: $m$, the number of exponential distributions in the mix.
Constraint: ${\mathbf{nmix}}\ge 1$.
a
Type: array<System..::..Double>[]()[][]
An array of size [nmix]
On entry: the $m$ parameters ${a}_{i}$ for the $m$ exponential distributions in the mix.
Constraint: ${\mathbf{a}}\left[\mathit{i}-1\right]>0.0$, for $\mathit{i}=1,2,\dots ,{\mathbf{nmix}}$.
wgt
Type: array<System..::..Double>[]()[][]
An array of size [nmix]
On entry: the $m$ weights ${w}_{i}$ for the $m$ exponential distributions in the mix.
Constraints:
• $\sum _{\mathit{i}=1}^{m}{\mathbf{wgt}}\left[\mathit{i}-1\right]=1.0$;
• ${\mathbf{wgt}}\left[\mathit{i}-1\right]\ge 0.0$, for $\mathit{i}=1,2,\dots ,m$.
g05state
Type: NagLibrary..::..G05..::..G05State
An Object of type G05.G05State.
x
Type: array<System..::..Double>[]()[][]
An array of size [n]
On exit: the $n$ pseudorandom numbers from the specified exponential mix distribution.
ifail
Type: System..::..Int32%
On exit: ${\mathbf{ifail}}={0}$ unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

# Description

The distribution has PDF (probability density function)
 $fx=∑i=1m1aiwie-x/aiif ​x≥0,fx=0otherwise,$
where $\sum _{i=1}^{m}{w}_{i}=1$ and ${a}_{i}>0$, ${w}_{i}\ge 0$.
g05sg returns the values ${x}_{i}$ by selecting, with probability ${w}_{j}$, random variates from an exponential distribution with parameter ${a}_{j}$.
One of the initialization methods (G05KFF not in this release) (for a repeatable sequence if computed sequentially) or (G05KGF not in this release) (for a non-repeatable sequence) must be called prior to the first call to g05sg.

# References

Kendall M G and Stuart A (1969) The Advanced Theory of Statistics (Volume 1) (3rd Edition) Griffin
Knuth D E (1981) The Art of Computer Programming (Volume 2) (2nd Edition) Addison–Wesley

# Error Indicators and Warnings

Errors or warnings detected by the method:
${\mathbf{ifail}}=1$
On entry, ${\mathbf{n}}<0$.
${\mathbf{ifail}}=2$
On entry, ${\mathbf{nmix}}\le 0$.
${\mathbf{ifail}}=3$
On entry, ${\mathbf{a}}\left[i-1\right]\le 0.0$ for at least one ${\mathbf{a}}\left[i-1\right]$.
${\mathbf{ifail}}=4$
On entry, ${\mathbf{wgt}}\left[i-1\right]<0.0$ for at least one ${\mathbf{wgt}}\left[i-1\right]$.
On entry, $\sum _{i=1}^{{\mathbf{nmix}}}{\mathbf{wgt}}\left[i-1\right]\ne 1.0$.
${\mathbf{ifail}}=5$
 On entry, state vector was not initialized or has been corrupted.
${\mathbf{ifail}}=-9000$
An error occured, see message report.
${\mathbf{ifail}}=-8000$
Negative dimension for array $〈\mathit{\text{value}}〉$
${\mathbf{ifail}}=-6000$
Invalid Parameters $〈\mathit{\text{value}}〉$

Not applicable.

None.