# IMSL_RANDOM_TABLE

The IMSL_RANDOM_TABLE procedure sets or retrieves the current table used in either the shuffled or GFSR random number generator.

Note: This routine requires an IDL Analyst license. For more information, contact your Exelis VIS sales or technical support representative.

The values in table are initialized by the IMSL random number generators. The values are all positive except if you wish to reinitialize the array, in which case the first element of the array is input as a nonpositive value. (Usually, one should avoid reinitializing these arrays, but it might be necessary sometimes in restarting a simulation.) If the first element of table is set to a nonpositive value on the call to IMSL_RANDOM_TABLE with the keyword SET, on the next invocation of a routine to generate random numbers, the appropriate table will be reinitialized.

For more details on the shuffled and GFSR generators see the “Overview: Random Number Generation” on page 1066.

## Examples

### Example 1

In this example, three separate simulation streams are used, each with a different form of the generator. Each stream is stopped and restarted. (Although this example is obviously an artificial one, there may be reasons for maintaining separate streams and stopping and restarting them because of the nature of the usage of the random numbers coming from the separate streams.)

nr = 5

iseed1 = 123457

iseed2 = 123457

iseed7 = 123457

; Begin first stream, iopt = 1 (by default)

IMSL_RANDOMOPT, Set = iseed1

r = IMSL_RANDOM(nr)

IMSL_RANDOMOPT, Get = iseed1

PM, r, TITLE = 'First stream output'

First stream output

0.966220

0.260711

0.766262

0.569337

0.844829

PRINT, 'output seed ', iseed1

output seed 1814256879

; Begin second stream, iopt = 2

IMSL_RANDOMOPT, gen_opt = 2

IMSL_RANDOMOPT, Set = iseed2

r = IMSL_RANDOM(nr)

IMSL_RANDOMOPT, Get = iseed2

IMSL_RANDOM_TABLE, table, /Get

PM, r, TITLE = 'Second stream output'

Second stream output

0.709518

0.186145

0.479442

0.603839

0.379015

PRINT, 'output seed ', iseed2

output seed 1965912801

; Begin third stream, iopt = 7

IMSL_RANDOMOPT, gen_opt = 7

IMSL_RANDOMOPT, Set = iseed7

r = IMSL_RANDOM(nr)

IMSL_RANDOMOPT, Get = iseed7

IMSL_RANDOM_TABLE, itable, /Get, /GFSR

PM, r, TITLE = 'Third stream output'

Third stream output

0.391352

0.0262676

0.762180

0.0280987

0.899731

PRINT, 'output seed ', iseed7

output seed 1932158269

; Reinitialize seed and resume first stream

IMSL_RANDOMOPT, gen_opt = 1

IMSL_RANDOMOPT, Set = iseed1

r = IMSL_RANDOM(nr)

IMSL_RANDOMOPT, Get = iseed1

PM, r, TITLE = 'First stream output'

First stream output

0.0442665

0.987184

0.601350

0.896375

0.380854

PRINT, 'output seed ', iseed1

output seed 817878095

; Reinitialize seed & table for shuffling & resume second stream

IMSL_RANDOMOPT, gen_opt = 2

IMSL_RANDOMOPT, Set = iseed2

IMSL_RANDOM_TABLE, table, /Set

r = IMSL_RANDOM(nr)

IMSL_RANDOMOPT, Get = iseed2

PM, r, TITLE = 'Second stream output'

Second stream output

0.255690

0.478770

0.225802

0.345467

0.581051

PRINT, 'output seed ', iseed2

output seed 2108806573

; Reinitialize seed and table for GFSR and resume third stream.

IMSL_RANDOMOPT, GEN_OPT = 7

IMSL_RANDOMOPT, SET = iseed7

IMSL_RANDOM_TABLE, itable, /SET, /GFSR

r = IMSL_RANDOM(nr)

IMSL_RANDOMOPT, GET = iseed7

PM, r, TITLE = 'Third stream output'

Third stream output

0.751854

0.508370

0.906986

0.0910035

0.691663

PRINT, 'output seed ', iseed7

output seed 1485334679

## Syntax

IMSL_RANDOM_TABLE, table [, /DOUBLE] [, /GET | /SET] [, /GFSR]

## Return Value

None

## Arguments

### table

One dimensional array used in the generators. For the shuffled generators table is length 128. For the GFSR generator table is length 1565. The argument table is input if the keyword SET is used, and output if the keyword GET is used.

## Keywords

### DOUBLE

If present and nonzero, double precision is used. This keyword is active only when the shuffled table is being set or retrieved.

### GET

If present and nonzero, then the specified table is being retieved.

### GFSR

If present and nonzero, then the specified GFSR table is being set or retrieved.

### SET

If present and nonzero, then the specified table is being set.

## Version History

6.4 | Introduced

## See Also