# Syntax

C# |
---|

public static void g05kk( int n, G05..::..G05State g05state, out int ifail ) |

Visual Basic |
---|

Public Shared Sub g05kk ( _ n As Integer, _ g05state As G05..::..G05State, _ <OutAttribute> ByRef ifail As Integer _ ) |

Visual C++ |
---|

public: static void g05kk( int n, G05..::..G05State^ g05state, [OutAttribute] int% ifail ) |

F# |
---|

static member g05kk : n : int * g05state : G05..::..G05State * ifail : int byref -> unit |

#### Parameters

- n
- Type: System..::..Int32
*On entry*: $n$, where the number of places to skip-ahead is defined as ${2}^{n}$.*Constraint*: ${\mathbf{n}}\ge 0$.

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

- 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

g05kk adjusts a base generator to allow multiple, independent, sequences of pseudorandom numbers to be generated via the skip-ahead method (see the

**G05**class for details).If, prior to calling g05kk the base generator defined by state would produce random numbers ${x}_{1},{x}_{2},{x}_{3},\dots $, then after calling g05kk the generator will produce random numbers ${x}_{{2}^{n}+1},{x}_{{2}^{n}+2},{x}_{{2}^{n}+3},\dots $.

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

The skip-ahead algorithm can be used in conjunction with any of the six base generators discussed in the

**G05**class.# References

Haramoto H, Matsumoto M, Nishimura T, Panneton F and L'Ecuyer P (2008) Efficient jump ahead for F2-linear random number generators

*INFORMS J. on Computing***20(3)**385–390Knuth 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, state vector was not initialized or has been corrupted.

- ${\mathbf{ifail}}=3$
- On entry, cannot use the skip-ahead method with the base generator defined by state.

- ${\mathbf{ifail}}=4$
- On entry, the base generator is Mersenne Twister, but the state vector defined on initialization is not large enough to perform a skip-ahead. See the initialization method (G05KFF not in this release) (G05KGF not in this release).

# Accuracy

Not applicable.

# Parallelism and Performance

None.

# Further Comments

Calling g05kk and then generating a series of uniform values using g05sa is equivalent to, but more efficient than, calling g05sa and discarding the first ${2}^{n}$ values. This may not be the case for distributions other than the uniform, as some distributional generators require more than one uniform variate to generate a single draw from the required distribution.