如何在matlab中生成跟随偏斜正态分布的随机数
答
不能保证其性能/充足,但http://azzalini.stat.unipd.it/SN/说以下内容,有一个链接到的MATLAB功能.zip文件:
库已被尼古拉·萨托利移植到Matlab的。到目前为止,这是指更新0.21;因此不包括倾斜t分布的设施。对于歪斜t分布的设施的部分是可用的但通过已被写入,并提供由恩里克Batiz(Enrique.Batiz [在] postgrad.mbs.ac.uk)
a set of Matlab functions另见this code这是在Visual Basic中,但应该很容易移植。相关摘录如下所示。这使用RandNorm(同样在链接的网页中),它是来自单位正态分布的一对数字,而在MATLAB中,您应该可以使用randn(2,1)
。
Function RandSkew(fAlpha As Single, _
Optional fLocation As Single = 0, _
Optional fScale As Single = 1, _
Optional bVolatile As Boolean = False) As Single
' shg 2008-0919
' http://azzalini.stat.unipd.it/SN/faq.html
' Returns a random variable with skewed distribution
' fAlpha = skew
' fLocation = location
' fScale > 0 = scale
Dim sigma As Single
Dim afRN() As Single
Dim u0 As Single
Dim v As Single
Dim u1 As Single
If bVolatile Then Application.Volatile
Randomize (Timer)
sigma = fAlpha/Sqr(1 + fAlpha^2)
afRN = RandNorm()
u0 = afRN(1)
v = afRN(2)
u1 = sigma * u0 + Sqr(1 - sigma^2) * v
RandSkew = IIf(u0 >= 0, u1, -u1) * fScale + fLocation
End Function
这是一个起点:http://en.wikipedia.org/wiki/Random_number_generation#Generation_from_a_probability_distribution – 2011-01-10 06:18:00
你是对的,但我需要歪斜正态分布随机number.to得到简单的随机数是那么容易。 – Amber 2011-01-10 06:42:00