屏幕截图 2024-11-14 214935.png (48 KB, 下载次数: 37)
fcode 发表于 2024-11-15 08:19
代码最好是复制粘贴,发在帖子里,而不要截图。
尝试把 do 11 后面的 11 删掉。enddo 11 后面的11删掉。 ...
watson 发表于 2024-11-15 14:41
试过了还是出错
FUNCTION ran2(idum)
INTEGER idum, IM1, IM2, IMM1, IA1, IA2, IQ1, IQ2, IR1, IR2, NTAB, NDIV
REAL ran2, AM, EPS, RNMX
PARAMETER (IM1=2147483563,IM2=2147483399,AM=1./IM1, IMM1=IM1-1, &
IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211, &
IR2=3791, NTAB=32,NDIV=1+IMM1/NTAB,EPS=1.2e-7,RNMX=1.-EPS)
INTEGER idum2, j, k, iv(NTAB), iy
SAVE iv, iy, idum2
DATA idum2/123456789/, iv/NTAB*0/,iy/0/
if (idum.le.0) then
idum=max(-idum,1)
idum2=idum
do 11 j=NTAB+8,1,-1
k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1
if (idum.lt.0) idum=idum+IM1
if (j.le.NTAB) iv(j)=idum
enddo 11
iy=iv(1)
endif
k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1
if (idum.lt.0 ) idum=idum+IM1
k=idum2/IQ2
idum2=IA2*(idum2-k*IQ2)-k*IR2
if (idum2.lt.0) idum2=idum2+IM2
j=1+iy/NDIV
iy=iv(j)-idum2
iv(j)=idum
if (iy.lt.1) iy=iy+IMM1
ran2=min(AM*iy, RNMX)
return
END
FUNCTION ran2(idum)
INTEGER idum, IM1, IM2, IMM1, IA1, IA2, IQ1, IQ2, IR1, IR2, NTAB, NDIV
REAL ran2, AM, EPS, RNMX
PARAMETER (IM1=2147483563,IM2=2147483399,AM=1./IM1, IMM1=IM1-1, &
IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211, &
IR2=3791, NTAB=32,NDIV=1+IMM1/NTAB,EPS=1.2e-7,RNMX=1.-EPS)
INTEGER idum2, j, k, iv(NTAB), iy
SAVE iv, iy, idum2
DATA idum2/123456789/, iv/NTAB*0/,iy/0/
if (idum.le.0) then
idum=max(-idum,1)
idum2=idum
do j=NTAB+8,1,-1
k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1
if (idum.lt.0) idum=idum+IM1
if (j.le.NTAB) iv(j)=idum
enddo
iy=iv(1)
endif
k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1
if (idum.lt.0 ) idum=idum+IM1
k=idum2/IQ2
idum2=IA2*(idum2-k*IQ2)-k*IR2
if (idum2.lt.0) idum2=idum2+IM2
j=1+iy/NDIV
iy=iv(j)-idum2
iv(j)=idum
if (iy.lt.1) iy=iy+IMM1
ran2=min(AM*iy, RNMX)
return
END
1.png (211.33 KB, 下载次数: 35)
fcode 发表于 2024-11-15 16:26
在我这里去掉之后就正常了啊。
如果你改了之后错误提示有变化,请给出新的错误提示。(而不是简单的说“还 ...
屏幕截图 2024-11-15 165418.png (18.1 KB, 下载次数: 36)
libifcoremdd.lib(for_main.obj) : error LNK2019: 无法解析的外部符号 _MAIN__,该符号在函数 _main 中被引用
fcode 发表于 2024-11-15 17:16
你这个程序只有子程序,没有主程序,不能独立运行呢。看看输出窗口,应该有类似
这种错误提示,就是在告诉 ...
program main
implicit none
integer :: idum
real :: random_number
! 初始化随机数种子,这里可自行设置合适的整数值
idum = 1234
! 调用ran2函数获取随机数
random_number = ran2(idum)
print *, "生成的随机数为:", random_number
end program main
FUNCTION ran2(idum)
INTEGER idum, IM1, IM2, IMM1, IA1, IA2, IQ1, IQ2, IR1, IR2, NTAB, NDIV
REAL ran2, AM, EPS, RNMX
PARAMETER (IM1=2147483563,IM2=2147483399,AM=1./IM1, IMM1=IM1-1,IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211, IR2=3791, NTAB=32,NDIV=1+IMM1/NTAB,EPS=1.2e-7,RNMX=1.-EPS)
INTEGER idum2, j, k, iv(NTAB), iy
SAVE iv, iy, idum2
DATA idum2/123456789/, iv/NTAB*0/,iy/0/
if (idum.le.0) then
idum=max(-idum,1)
idum2=idum
do j=NTAB+8,1,-1
k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1
if (idum.lt.0) idum=idum+IM1
if (j.le.NTAB) iv(j)=idum
enddo
iy=iv(1)
endif
k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1
if (idum.lt.0 ) idum=idum+IM1
k=idum2/IQ2
idum2=IA2*(idum2-k*IQ2)-k*IR2
if (idum2.lt.0) idum2=idum2+IM2
j=1+iy/NDIV
iy=iv(j)-idum2
iv(j)=idum
if (iy.lt.1) iy=iy+IMM1
ran2=min(AM*iy, RNMX)
return
END
watson 发表于 2024-11-19 00:23
program main
implicit none
integer :: idum
program main
implicit none
real :: rnd
call random_seed()! 初始化随机数种子
! 调用ran2函数获取随机数
call random_number(rnd)
print *, "生成的随机数为:", rnd
end program main
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |