RANDOM_SEED (The GNU Fortran Compiler)

### 8.233 `RANDOM_SEED` — Initialize a pseudo-random number sequence ¶

Synopsis:

  `CALL RANDOM_SEED([SIZE, PUT, GET])`

Description:

  Restarts or queries the state of the pseudorandom number generator used by `RANDOM_NUMBER`.

  If `RANDOM_SEED` is called without arguments, it is seeded with random data retrieved from the operating system.

  As an extension to the Fortran standard, the GFortran `RANDOM_NUMBER` supports multiple threads. Each thread in a multi-threaded program has its own seed. When `RANDOM_SEED` is called either without arguments or with the PUT argument, the given seed is copied into a master seed as well as the seed of the current thread. When a new thread uses `RANDOM_NUMBER` for the first time, the seed is copied from the master seed, and forwarded N * 2^{128} steps to guarantee that the random stream does not alias any other stream in the system, where N is the number of threads that have used `RANDOM_NUMBER` so far during the program execution.

Class:

  Subroutine

Arguments:

  SIZE | (Optional) Shall be a scalar and of type default `INTEGER`, with `INTENT(OUT)`. It specifies the minimum size of the arrays used with the PUT and GET arguments.
  PUT | (Optional) Shall be an array of type default `INTEGER` and rank one. It is `INTENT(IN)` and the size of the array must be larger than or equal to the number returned by the SIZE argument.
  GET | (Optional) Shall be an array of type default `INTEGER` and rank one. It is `INTENT(OUT)` and the size of the array must be larger than or equal to the number returned by the SIZE argument.

Example:

      program test_random_seed
        implicit none
        integer, allocatable :: seed(:)
        integer :: n

        call random_seed(size = n)
        allocate(seed(n))
        call random_seed(get=seed)
        write (*, *) seed
      end program test_random_seed

Standard:

  Fortran 90 and later

See also:

  `RANDOM_NUMBER` — Pseudo-random number,
  `RANDOM_INIT` — Initialize a pseudo-random number generator