seed_rng Subroutine

public subroutine seed_rng(seed)

与えたシード列またはシステム時刻から逐次 PCG64 乱数列を初期化する。

Arguments

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

Calls

proc~~seed_rng~~CallsGraph proc~seed_rng seed_rng proc~seed_random_stream seed_random_stream proc~seed_rng->proc~seed_random_stream proc~counter_key counter_key proc~seed_random_stream->proc~counter_key

Called by

proc~~seed_rng~~CalledByGraph proc~seed_rng 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(i64) :: clk

    if (present(seed)) then
      call seed_random_stream(seed)
    else
      call system_clock(count=clk)
      call seed_random_stream([int(iand(clk, 2147483647_i64), i32), int(iand(ishft(clk, -31), 2147483647_i64), i32)])
    end if
  end subroutine seed_rng