mt19937 Derived Type

type, public :: mt19937

Class that encapsulates the mersenne-twister random number generator


Type-Bound Procedures

procedure, public :: init_genrand64

  • private subroutine init_genrand64(mt, seed)

    Initializes mt(nn) with a seed

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    integer(kind=i64), intent(in) :: seed

    An integer variable with the random seed

procedure, public :: init_by_array64

  • private subroutine init_by_array64(mt, init_key)

    Initializes by an array with array-length init_key is the array for initializing keys

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    integer(kind=i64), intent(in) :: init_key(:)

    An integer array with random seeds

generic, public :: initialize => init_genrand64, init_by_array64

  • private subroutine init_genrand64(mt, seed)

    Initializes mt(nn) with a seed

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    integer(kind=i64), intent(in) :: seed

    An integer variable with the random seed

  • private subroutine init_by_array64(mt, init_key)

    Initializes by an array with array-length init_key is the array for initializing keys

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    integer(kind=i64), intent(in) :: init_key(:)

    An integer array with random seeds

procedure, public :: genrand64_real1

  • private function genrand64_real1(mt)

    Generates a random number on [0,1]-real-interval

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    Return Value real(kind=r64)

procedure, public :: genrand64_real2

  • private function genrand64_real2(mt)

    Generates a random number on [0,1)-real-interval

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    Return Value real(kind=r64)

procedure, public :: genrand64_real3

  • private function genrand64_real3(mt)

    Generates a random number on (0,1)-real-interval

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    Return Value real(kind=r64)

procedure, public :: genrand64_int64

  • private function genrand64_int64(mt)

    Generates a random number on [-2^63, 2^63-1]-interval

    Arguments

    Type IntentOptional Attributes Name
    class(mt19937) :: mt

    A mt19937 object

    Return Value integer(kind=r64)

Source Code

type :: mt19937
    !! Class that encapsulates the mersenne-twister random number generator
    private
        integer(i64) :: mt(nn) =0_i64       ! array for the state vector
        integer     :: mti = nn+1   ! mti==nn+1 means mt(nn) is not initialized
    contains
        procedure,public :: init_genrand64
        procedure,public :: init_by_array64
        generic,public :: initialize => init_genrand64,init_by_array64
        procedure,public :: genrand64_real1
        procedure,public :: genrand64_real2
        procedure,public :: genrand64_real3
        procedure,public :: genrand64_int64

end type mt19937