【问题标题】:Create a log normal distribution of random numbers?创建随机数的对数正态分布?
【发布时间】:2012-12-06 21:33:49
【问题描述】:

我正在尝试在 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 是什么,但我不知道它们的方法/流是什么意思,以及我应该将这些值作为什么传递。还有,什么是状态?我如何在我的代码中调用这个函数?我需要包含任何文件吗?

【问题讨论】:

  • 你安装了 Intel 的 MKL 吗?

标签: fortran


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    或者您可以编写自己的日志普通函数。

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

    y = exp(mu+sigma*x)
    

    而且,如果您没有 x 的函数,您可以使用 Marsaglia 极坐标方法用几行代码创建一个函数。

    【讨论】:

    • 您能否详细说明如何使用 Marsaglia 极坐标法?谢谢!
    猜你喜欢
    • 2014-07-13
    • 2011-03-17
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2017-05-18
    • 2022-10-05
    相关资源
    最近更新 更多