2012年11月19日 星期一

fortran & random_seed


       program test_seed
       implicit none
       real x
       integer jj
       call init_random_seed()
       do jj=1,10
       call random_number(x)  ! initial 之後 再call 即為 random ~~@@
       write(*,*) x
       enddo
       end program

       subroutine init_random_seed()
       INTEGER :: i, n, clock
       INTEGER,  ALLOCATABLE :: seed(:)

       CALL RANDOM_SEED(size = n)
       ALLOCATE(seed(n))
       CALL SYSTEM_CLOCK(COUNT=clock)
       seed = clock - 2047 * (/ (i - 1, i = 1, n) /)
       seed = seed * 1103515245 + 2531011
       CALL RANDOM_SEED(PUT = seed)
       DEALLOCATE(seed)
       end subroutine
----------------------------------------

program random_test
implicit none
  real*8 :: x(10)

!  call random_seed()
 call init_random_seed() !<- this line is for GFortran
  call random_number(x)
  write(*,'(F21.18)') x
end program

沒有留言:

張貼留言