NCL Home > Documentation > Functions > Random number generators


Sets initial seeds for random number generators.


	procedure random_setallseed (
		iseed1  : integer,  
		iseed2  : integer   



Any integer between 1 and 2,147,483,562 (default is 1234567890).


Any integer between 1 and 2,147,483,398 (default is 123456789).


This procedure is used to set the state of a random number generator. If the user does not explicitly set the seeds, they are set to the stated default values. It is recommended that the user specify these seeds. The source of this random number seed generator is from the random section at Netlib. The authors were Brian Brown and James Lovato. The official reference is:

Authors: P. L'Ecuyer and S. Cote
Title: Implementing a Random Number Package with Splitting Facilities
Journal: ACM Transactions on Mathematical Software 17:1, pp 98-111.

See Also

random_chi, random_gamma, random_normal, random_uniform


Example 1

Set seeds for generating random deviates:

  random_setallseed(136484749,19494848)      ; Set seeds (suggested, NOT required)

Example 2

One method of assuring different seeds is to use some available timing function(s). This accesses the *nix system date functions. For example: here the letter 'l' is appended to the two constants to force long integers. The mod operator, %, is used on the two long integers and the toint function forces a return to the required 32-bit integer.

    rseed1 = toint(systemfunc(" date +%s"))
    rseed2 = toint((12345l*rseed1)%2147483398l)
    random_setallseed(rseed1, rseed2)

Testing might look like:

    N     = 100
    do i = 0,999
       rand1_tst = toint(systemfunc(" date +%s"))
       rand2_tst = toint((54321l*rand1_tst)%2147483398l)
       random_setallseed(rand1_tst, rand2_tst)
       test = random_normal(0,1,N)
    end do