我正在尝试在Fortran 90中重写一些Python / numpy代码。在我的Python代码中,我使用以下命令生成5000个随机日志正态分布式数字:
numpy.random.lognormal(mu,sigma,5000)
我正在尝试在Fortran中做同样的事情。我对Fortran不太熟悉,但我在英特尔的网站上发现了这个:
status = vdrnglognormal( method, stream, n, r, a, sigma, b, beta )
我知道n,r,a,sigma,b
和beta
是什么,但我不知道它们对方法/流的含义是什么,以及我应该将这些值传递给我们。另外,状态是什么?我如何在我的代码中调用此函数?我需要包含任何文件吗?
答案 0 :(得分:2)
另一种可能的解决方案:GNU科学库(GSL)提供返回日志正常偏差的函数gsl_ran_lognormal。 GSL在C中。有一个Fortran接口,FGSL,http://www.lrz.de/services/software/mathematik/gsl/fortran/,使用ISO C绑定。或者你可以编写自己的界面。
答案 1 :(得分:1)
或者您可以编写自己的日志正常功能。
给定零均值,单位偏差正态分布随机变量x
,那么正态分布的日志就是
y = exp(mu+sigma*x)
并且,如果你没有x
的函数,你可以使用Marsaglia极坐标法只用几行代码来创建一个函数。