主题:新人看不懂一段随机数程序
程序如下,
1.是不是线性同余法?
2.求模时为什么用的双精度,而不是直接用整型
3.程序中的case有何用,ia有何用?
4.是read(5,'(5i8)')?是不是应该是read(5,'(15i8)')?
5.iy为什么要录入15个值
subroutine randomz(ia,ib,x) !伪随机数产生器子程序
implicit none
integer ia,ib
real*8 x
integer,save:: initial(15)
real*8 ,save:: iy(15),iz
selectcase(ia)
case(1) ! 初始
iz=100000001.d0
read(5,'(5i8)') initial
iy=dble(initial)
x=iy(ib)*1.0d-8
case(2) ! 产生随机数
iy(ib)=mod(329.d0*iy(ib),iz)
x=iy(ib)*1.0d-8
case(3) ! 复位为初始iy
iy=dble(initial)
endselect
end
1.是不是线性同余法?
2.求模时为什么用的双精度,而不是直接用整型
3.程序中的case有何用,ia有何用?
4.是read(5,'(5i8)')?是不是应该是read(5,'(15i8)')?
5.iy为什么要录入15个值
subroutine randomz(ia,ib,x) !伪随机数产生器子程序
implicit none
integer ia,ib
real*8 x
integer,save:: initial(15)
real*8 ,save:: iy(15),iz
selectcase(ia)
case(1) ! 初始
iz=100000001.d0
read(5,'(5i8)') initial
iy=dble(initial)
x=iy(ib)*1.0d-8
case(2) ! 产生随机数
iy(ib)=mod(329.d0*iy(ib),iz)
x=iy(ib)*1.0d-8
case(3) ! 复位为初始iy
iy=dble(initial)
endselect
end