如何在Lua中创建一个返回来自LEVY分布的随机数的函数?

正如标题所述,我是否可以在 Lua 中制作一个简单的函数来基于 Levy 概率密度函数 生成随机数?

我打算使用 Levy 飞行来使粒子在搜索空间中更有效地探索(进行大步移动)。

点赞
用户107090
用户107090

Lévy PDF的图表上使用拒绝抽样

2014-06-19 01:50:21
用户3721765
用户3721765

Lévy PDF的图表上使用拒绝抽样 [用户回答:lhf]

代码示例:

function rejectionSampling()
repeat
    local x = random.uniform(1)
    local y = random.uniform(1.5)       -- PDF 在 x=1/3 处达到最大值 --> y~1.45
    fx = math.sqrt(1/(2*math.pi))*math.exp(-1/(2*x))/(x^1.5)  --PDF
until y < fx

return x
end
2014-06-19 06:11:58
用户1552041
用户1552041

一种解决方案可能是:

  1. John Nolan RobustAnalysis上课。
  2. 购买/尝试C库,此处为文档
  3. 使用luaJit ffi库,将C函数和数据结构映射到lua中。

……这不困难,但需要时间。

虽然(我知道问题是关于lua的),但你可以尝试lua和Wolfram Mathematica之间的交互,在那里稳定分布是内置的

2014-06-20 13:44:55