0
我編寫了一個線性同餘發生器,它向終端輸出10000個僞隨機值。這是模塊的一部分,因此也是它自己的功能。我現在要編寫一個新的函數,它需要2個隨機均勻分佈的數字,並將它們用在盒子磨牀方法中以生成2個以上的數字。我理解盒子零件本身,我只是不明白我如何編程才能從前面的10000中取出2個值?這裏是我的代碼:如何編寫一個使用另一個生成10000個值的函數的2個值的函數?
module rng
implicit none
integer, parameter :: dp = selected_real_kind(15,300)
real(kind=dp) :: A=100, B= 104001, M = 714025
contains
function lcg(seed)
integer :: lcg
integer, optional, intent(in) :: seed
real(kind=dp) :: x = 0
if(present(seed)) x = seed
x = mod(A * x + B, M)
lcg = x
end function
end module
program lcgtest
use rng
implicit none
integer :: N
do N = 1, 10000
print *, lcg()
end do
end program
謝謝。
這是一個練習嗎?因爲實際使用你會發現很好的圖書館。 –
「只取前兩次10000的值」。從字面上看,您可以將10000個值保存在一個數組中。你用什麼標準來挑選這兩個?你爲什麼要這樣做? – agentp