2

我正在尝试在 Fortran 90 中重新编写一些 Python / numpy 代码。在我的 Python 代码中,我使用以下命令生成 5000 个随机对数正态分布数:

numpy.random.lognormal(mu,sigma,5000)

我正在尝试在 Fortran 中做同样的事情。我对 Fortran 不是很熟悉,但我在 Intel 的网站上找到了这个:

status = vdrnglognormal( method, stream, n, r, a, sigma, b, beta )

http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-C564D9DC-FDF0-426B-9C9D-1740969BDBEC.htm

我知道n,r,a,sigma,bbeta是什么,但我不知道方法/流是什么意思,以及我应该将这些值作为什么传递。还有,什么是状态?我如何在我的代码中调用这个函数?我需要包含任何文件吗?

4

2 回答 2

2

另一种可能的解决方案:GNU 科学库 (GSL) 提供了一个函数来返回日志正态偏差,gsl_ran_lognormal。GSL 在 C 中。有一个 Fortran 接口,FGSL,http: //www.lrz.de/services/software/mathematik/gsl/fortran/,使用 ISO C 绑定。或者您可以编写自己的界面。

于 2012-12-06T22:04:29.873 回答
2

或者您可以编写自己的日志正常功能。

给定一个零均值、单位偏差正态分布的随机变量x,那么对数正态分布很简单

y = exp(mu+sigma*x)

而且,如果你没有一个函数,x你可以使用 Marsaglia 极坐标方法只用几行代码来制作一个。

于 2012-12-08T00:03:49.050 回答