g05tj generates a vector of pseudorandom integers from the discrete Poisson distribution with mean $\lambda $.

# Syntax

C# |
---|

public static void g05tj( int mode, int n, double lambda, double[] r, G05..::..G05State g05state, int[] x, out int ifail ) |

Visual Basic |
---|

Public Shared Sub g05tj ( _ mode As Integer, _ n As Integer, _ lambda As Double, _ r As Double(), _ g05state As G05..::..G05State, _ x As Integer(), _ <OutAttribute> ByRef ifail As Integer _ ) |

Visual C++ |
---|

public: static void g05tj( int mode, int n, double lambda, array<double>^ r, G05..::..G05State^ g05state, array<int>^ x, [OutAttribute] int% ifail ) |

F# |
---|

static member g05tj : mode : int * n : int * lambda : float * r : float[] * g05state : G05..::..G05State * x : int[] * ifail : int byref -> unit |

#### Parameters

- mode
- Type: System..::..Int32
*On entry*: a code for selecting the operation to be performed by the method.- ${\mathbf{mode}}=0$
- Set up reference vector only.
- ${\mathbf{mode}}=1$
- Generate variates using reference vector set up in a prior call to g05tj.
- ${\mathbf{mode}}=2$
- Set up reference vector and generate variates.
- ${\mathbf{mode}}=3$
- Generate variates without using the reference vector.

*Constraint*: ${\mathbf{mode}}=0$, $1$, $2$ or $3$.

- n
- Type: System..::..Int32
*On entry*: $n$, the number of pseudorandom numbers to be generated.*Constraint*: ${\mathbf{n}}\ge 0$.

- lambda
- Type: System..::..Double
*On entry*: $\lambda $, the mean of the Poisson distribution.*Constraint*: ${\mathbf{lambda}}\ge 0.0$.

- r
- Type: array<System..::..Double>[]()[][]An array of size [lr]
*On entry*: if ${\mathbf{mode}}=1$, the reference vector from the previous call to g05tj.If ${\mathbf{mode}}=3$, r is not referenced.*On exit*: if ${\mathbf{mode}}\ne 3$, the reference vector.

- g05state
- Type: NagLibrary..::..G05..::..G05StateAn Object of type G05.G05State.

- x
- Type: array<System..::..Int32>[]()[][]An array of size [n]
*On exit*: the $n$ pseudorandom numbers from the specified Poisson 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

g05tj generates $n$ integers ${x}_{i}$ from a discrete Poisson distribution with mean $\lambda $, where the probability of ${x}_{i}=I$ is

where $\lambda \ge 0$.

$$P\left({x}_{i}=I\right)=\frac{{\lambda}^{I}\times {e}^{-\lambda}}{I!}\text{, \hspace{1em}}I=0,1,\dots \text{,}$$ |

The variates can be generated with or without using a search table and index. If a search table is used then it is stored with the index in a reference vector and subsequent calls to g05tj with the same parameter values can then use this reference vector to generate further variates. The reference array is found using a recurrence relation if $\lambda $ is less than $50$ and by Stirling's formula otherwise.

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 g05tj.

# References

Kendall M G and Stuart A (1969)

*The Advanced Theory of Statistics (Volume 1)*(3rd Edition) GriffinKnuth 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{mode}}\ne 0$, $1$, $2$ or $3$.

- ${\mathbf{ifail}}=2$
- On entry, ${\mathbf{n}}<0$.

- ${\mathbf{ifail}}=3$
- On entry, ${\mathbf{lambda}}<0.0$.

- ${\mathbf{ifail}}=4$
- On entry, lambda is not the same as when r was set up in a previous call to g05tj with ${\mathbf{mode}}=0$ or $2$.On entry, the r vector was not initialized correctly, or has been corrupted.

- ${\mathbf{ifail}}=5$

- ${\mathbf{ifail}}=6$
On entry, state vector was not initialized or has been corrupted.

# Accuracy

Not applicable.

# Parallelism and Performance

None.

# Further Comments

None.