rand()随机数的产生在fortran中不是标准库的函数,ifort编译含rand()的f90文件会提示
error #6404: This name does not have a type, and must have an explicit type. [RAND]
random_number是标准库的一个函数,可以在源码中使用自定义的rand(),则可通过ifort编译
!generates uniform random numbers between [0,1]
function rand() !returns random number between 0 - 1
implicit none
integer , save :: flag = 0
double precision :: rand
if(flag==0) then
call random_seed()
flag = 1
endif
call random_number(rand) ! built in fortran 90 random number function
end function rand
最好是的方法原来是添加 USE IFPORT 即可!
program test_rand
USE IFPORT
implicit none
write (*,*) rand()
end
更好的方法是直接使用gfortran编译,它是识别rand()的
坑的是suse11中居然没有直接包含gfortran,查看一下gcc 的版本是4.3
https://gcc.gnu.org/wiki/GFortranBinaries#GNU.2BAC8-Linux
选择合适自己服务器的版本
下载http://gfortran.com/download/x86_64/snapshots/gcc-4.3.tar.xz
这是编译好的
参考 http://muzirui.blog.163.com/blog/static/12861700320126675650418/
直接解压到指定位置即可
#/opt/gcc-4.3
# xz -d gcc-4.3.tar.xz
# tar xvf gcc-4.3.tar
记得加上使用路径就好(在profile 或 .bashrc中添加)
e.g.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gcc-4.3/lib64
export PATH=$PATH:/opt/gcc-4.3/bin