VBA产生柯西分布随机数CauchyRand

分类:代码, 博客 标签:,

智能算法中除了经常用到正态分布的随机数外,还经常需要另外一种分布随机数产生器,那就是柯西分布,柯西分布可以有较大的概率跳出局部最优,加大搜索范围,不少改进的进化算法都引入了柯西分布随机数来对算法进行改进,CnHUP曾经在VBA产生正态分布随机数NormalRand中实现了相关的代码,这里再使用VBA实现柯西分布随机数的产生,函数名为CauchyRand。具体VBA代码如下:

'================================
' 柯西分布随机数产生
' 产生标准柯西分布随机数
' http://www.cnhup.com
'================================
Function CauchyRand() As Double
    Dim u1 As Double, u2 As Double, v1 As Double, v2 As Double

        Do
            u1 = Rnd
            u2 = Rnd
            v1 = 2# * u1 - 1#
            v2 = u2
        Loop Until v1 * v1 + v2 * v2 < 1#

        CauchyRand = v1 / v2
End Function


分类:代码, 博客 标签:,

发表评论

You must be logged in to post a comment.