seed_rng Subroutine

public subroutine seed_rng(seed)

与えたシード列またはシステム時刻からFortran乱数生成器を初期化する。

Arguments

Type IntentOptional Attributes Name
integer(kind=i32), intent(in), optional :: seed(:)

Called by

proc~~seed_rng~~CalledByGraph proc~seed_rng seed_rng proc~init_particles_from_config init_particles_from_config proc~init_particles_from_config->proc~seed_rng proc~seed_particles_from_config seed_particles_from_config proc~seed_particles_from_config->proc~seed_rng proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~seed_particles_from_config program~main main program~main->proc~load_or_init_run_state

Source Code

  subroutine seed_rng(seed)
    integer(i32), intent(in), optional :: seed(:)
    integer :: n, i, clk
    integer, allocatable :: put(:)

    call random_seed(size=n)
    allocate (put(n))

    if (present(seed)) then
      do i = 1, n
        put(i) = seed(mod(i - 1, size(seed)) + 1) + 104729*i
      end do
    else
      call system_clock(count=clk)
      do i = 1, n
        put(i) = clk + 37*i
      end do
    end if

    call random_seed(put=put)
  end subroutine seed_rng