Spec-Zone.ru › GNU Fortran 12

8.225 RANDOM_SEED — Инициализация последовательности псевдослучайных чисел

Описание:

Перезапускает или запрашивает состояние генератора псевдослучайных чисел, используемого в RANDOM_NUMBER.

Если RANDOM_SEED вызывается без аргументов, оно инициализируется случайными данными, полученными из операционной системы.

В качестве расширения к стандарту Fortran, GFortran RANDOM_NUMBER поддерживает несколько потоков. Каждый поток в многопоточной программе имеет собственное значение seed. Когда RANDOM_SEED вызывается либо без аргументов, либо с аргументом PUT, заданное значение seed копируется в мастер-seed, а также в seed текущего потока. Когда новый поток использует RANDOM_NUMBER в первый раз, значение seed копируется из мастер-seed и сдвигается на N * 2^{128} шагов, чтобы гарантировать, что последовательность случайных чисел не дублирует другие последовательности в системе, где N — количество потоков, которые использовали RANDOM_NUMBER до этого момента во время выполнения программы.

Стандарт:

Fortran 90 и более поздние версии

Класс:

Подпрограмма

Синтаксис:

CALL RANDOM_SEED([SIZE, PUT, GET])

Аргументы:
SIZE (Необязательно) Должен быть скаляром и типа стандартного INTEGER, с INTENT(OUT). Он указывает минимальный размер массивов, используемых с аргументами PUT и GET.
PUT (Необязательно) Должен быть массивом типа стандартного INTEGER и ранга один. Он INTENT(IN) и размер массива должен быть не меньше числа, возвращенного аргументом SIZE.
GET (Необязательно) Должен быть массивом типа стандартного INTEGER и ранга один. Он INTENT(OUT) и размер массива должен быть не меньше числа, возвращенного аргументом SIZE.
Пример:
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
См. также:

RANDOM_NUMBER, RANDOM_INIT

Далее: RANGE, Предыдущий: RANDOM_NUMBER, Вверх: Встроенные процедуры [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gfortran/RANDOM_005fSEED.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API