FORTRAN中用於產生隨機數的子程序有random_seed和random_number,其中random_seed產生seed,random_number根據seed的值產生隨機數。當random_seed()的參數爲空時,其會給出一個默認的seed值,這意味着每次調用時產生的隨機數都是相同的。(這也是有用的,這意味着你每次在執行程序的時候,會得到相同隨機數序列,這些便於調試,可是有時候可能會須要每次生成不一樣的隨機數序列以知足程序的要求)。
html
下面的方法利用系統時間產生隨機數:shell
subroutine init_random_seed() integer :: i,n,clock integer,dimension(:),allocatable :: seed call random_seed(size=n) allocate(seed(n)) call system_clock(count=clock) seed=clock+37*(/(i-1,i=1,n)/) call random_seed(PUT=seed) deallocate(seed) end subroutine
該子程序來源於GNU Fortran:http://gcc.gnu.org/onlinedocs/gfortran/RANDOM_005fSEED.htmldom
(以上內容轉載自:http://blog.sina.com.cn/s/blog_872ecf9f01010kwl.html)spa
調用經過以下程序可進行調用:調試
program randomnum implicit real*8(a-h,o-z) call init_random_seed() call random_number(x) write(*,*)x end
注意:在一個程序中只需調用一次子程序 init_random_seed(),特別是在有另外一個子程序也須要產生隨機數的狀況下,仍無需(說是不能或許更爲恰當些)再次調用init_random_seed()。不然,若兩次調用時間相差很小,可能出現生成的隨機數的seed同樣的狀況,此時就會出現某個隨機數連續出現若干次的狀況。code