看板 Fortran 關於我們 聯絡資訊
以下程式,呼叫 init_rnd() 這個副程式 640次,總計花費時間 10.52秒, 其所代表的意義是 call random_seed() 這個副程式是 呼叫 系統時間,使用 系統時間的秒數來當作 亂數的種子數。 而作業系統每秒鐘更新 系統時間 64次, 每隔 1/64 秒,才會得到 不同的時間, 因為在 很短的時間內 , 重複的呼叫 call random_seed() 會得到 很接近的時間數字,所以 一開始的 產生的亂數匯 很接近,不夠亂。 所以,又要有一些 改變的作法。 program VF1019 implicit none integer i, j, k real x, y, z do i=1, 640 call init_rnd() end do CALL RANDOM_NUMBER(x) print *, i, x end program VF1019 ! ----------------------------------------------- subroutine init_rnd() implicit none integer ct1 real x, x1 call random_seed() call random_number(x) x1= x do while (x1 .EQ. x) call random_seed() call random_number(x) end do end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.20.173.112