我需要操纵随机产生一个带有钟形曲线形状的统计平均值,这是我的尝试:
Function slopedrand(max As Single, bias As Single) As Integer
Dim count As Single = 0
While count < bias
max = rand.NextDouble() * max
count += rand.NextDouble()
End While
Return rand.NextDouble() * max
End Function
Function bulgedrand(min As Single, max As Single, bulge As Single, bias As Single)
Dim negative = bulge - min
Dim positive = max - bulge
Dim nr = min + slopedrand(negative, bias)
Dim pr = max - slopedrand(positive, bias)
Return rand.NextDouble() * (pr - nr) + nr
End Function
然而,鉴于我吮吸数学,它所产生的就是这样的东西:http://i.imgur.com/JDAW6kM.png
更像是一个凸起......
既然感觉我的头骨沸腾了,也许这里的某个人已经想出如何完成我需要的东西并且会让我免于进一步的思考?
(这个例子是在vb.net中给出的,因为它可以快速进行原型设计,但欢迎使用任何语言)
答案 0 :(得分:2)
“建立”的方法是在[0,1]范围内绘制均匀分布的随机数,然后应用Bell曲线分布的分位数函数。然后,它会为您提供一个与Bell曲线具有相同分布的随机数。
答案 1 :(得分:0)
钟形曲线可以用正态分布近似,所以我猜你可以在公式中使用随机值进行正态分布并得到你需要的效果,例如在这个答案中:
drawing random number from a standard normal distribution using the standard rand() functions
也许它可以帮到你?