Fortran中的gasdev函数
时间: 2024-05-07 14:21:40 浏览: 144
Fortran 自由函数集合
Fortran中的`gasdev`函数是用于生成服从正态分布(也称为高斯分布)的随机数的函数。其实现基于Box-Muller变换。下面是一个简单的示例程序:
```fortran
function gasdev(idum)
implicit none
integer, intent(inout) :: idum
real :: gasdev
real :: fac, rsq, v1, v2
do while (.true.)
call ran2(idum, v1)
call ran2(idum, v2)
v1 = 2.0 * v1 - 1.0
v2 = 2.0 * v2 - 1.0
rsq = v1 * v1 + v2 * v2
if (rsq < 1.0 .and. rsq > 0.0) exit
end do
fac = sqrt(-2.0 * log(rsq) / rsq)
gasdev = v1 * fac
end function gasdev
```
其中,`ran2`函数是用于生成[0,1]范围内均匀分布的随机数的函数。`idum`是一个用于控制随机数序列的种子值。
使用方法示例:
```fortran
program test_gasdev
implicit none
integer :: idum, i
real :: x
idum = 12345 ! 随机数种子值
do i = 1, 10
x = gasdev(idum)
write(*,*) x
end do
end program test_gasdev
```
此程序将生成10个服从正态分布的随机数,并输出到屏幕上。
阅读全文