Fortran产生正态分布的随机数

Fortran中用来产生随机数的函数是RANDOM_NUMBER(不需要再调用子程序RANDOM_SEED)。在fcode网站上已经对fortran产生随机数(http://fcode.cn/guide-96-1.html)和fortran产生正态分布的函数(http://fcode.cn/code_prof-33-1.html)进行了介绍。但是随着gfortran版本的升级,生成随机数的语句需要适当的改变。Fortran产生正态分布的随机数

上图中的MATHS模块可以用来产生正态分布的随机数。mean是均值,std是标准差,r表示需要产生的正态分布随机数的个数(n*2的数组)。gfortran 7.2 版本之后,不再需要调用RANDOM_SEED子程序(每次运行产生的随机数是变化的——本人亲测)。对于intel fortran编译器本人也进行了测试去掉CALL RANDOM_SEED()语句之后,程序产生的正态分布随机数永远一样。对于可能用IVF和gfortran的读者来说,最好加上语句CALL RANDOM_SEED()语句。


本文对gfortran 7.2 及其以上版本的产生正态分布的随机数进行了简单的说明。

如果读者在用本文的程序或方法时最好先对其进行测试,以排除不同机器或编译器的影响。

希望和大家共同交流进步。