RANDOM_INIT (The GNU Fortran Compiler)

### 8.231 `RANDOM_INIT` — Initialize a pseudo-random number generator ¶

Synopsis:

  `CALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)`

Description:

  Initializes the state of the pseudorandom number generator used by `RANDOM_NUMBER`.

Class:

  Subroutine

Arguments:

  REPEATABLE | Shall be a scalar with a `LOGICAL` type, and it is `INTENT(IN)`. If it is `.true.`, the seed is set to a processor-dependent value that is the same each time `RANDOM_INIT` is called from the same image. The term “same image” means a single instance of program execution. The sequence of random numbers is the same for repeated execution of the program with the same execution environment. If it is `.false.`, the seed is set to a processor-dependent value.
  IMAGE_DISTINCT | Shall be a scalar with a `LOGICAL` type, and it is `INTENT(IN)`. If it is `.true.`, the seed is set to a processor-dependent value that is distinct from the seed set by a call to `RANDOM_INIT` in another image. If it is `.false.`, the seed is set to a value that is the same on every image calling `RANDOM_INIT`.

Example:

      program test_random_seed
        implicit none
        real x(3), y(3)
        call random_init(.true., .true.)
        call random_number(x)
        call random_init(.true., .true.)
        call random_number(y)
        ! x and y are the same sequence
        if (any(x /= y)) call abort
      end program test_random_seed

Standard:

  Fortran 2018

See also:

  `RANDOM_NUMBER` — Pseudo-random number,
  `RANDOM_SEED` — Initialize a pseudo-random number sequence