Algorithm 钟形曲线形状的随机数

Algorithm 钟形曲线形状的随机数,algorithm,random,Algorithm,Random,我需要操纵random以产生钟形曲线形状的统计平均值,以下是我的尝试: 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

我需要操纵random以产生钟形曲线形状的统计平均值,以下是我的尝试:

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
函数slopedrand(最大为单个,偏差为单个)为整数
作为单个的Dim计数=0
而计数<偏差
max=rand.NextDouble()*max
计数+=rand.NextDouble()
结束时
返回rand.NextDouble()*最大值
端函数
函数凸出和(最小为单个,最大为单个,凸出为单个,偏差为单个)
尺寸负=凸起-最小值
尺寸正=最大-凸起
尺寸nr=最小+倾斜带(负,偏差)
Dim pr=最大-倾斜带(正、偏置)
返回rand.NextDouble()*(pr-nr)+nr
端函数
然而,考虑到我的数学很烂,它产生的只是这样的东西:

这更像是一个凸起

既然感觉我的头骨在沸腾,也许这里有人已经想出了如何实现我所需要的,并将免除我进一步思考的尝试


(该示例在vb.net中给出,因为它很快就可以原型化,但欢迎使用任何语言)

钟形曲线可以用正态分布近似,因此我想您可以在正态分布的公式中使用随机值,并获得所需的效果,如以下答案:


也许它可以帮助你?

这样做的“既定”方法是在范围内画一个均匀分布的随机数[0,1),然后应用钟形曲线分布的分位数函数。这将为您提供一个与钟形曲线具有相同分布的随机数。

这是关于什么语言的?它看起来像vb.net。当您说“钟形曲线”时,
rand()+rand()
基本上不会给您一些接近钟形曲线的东西吗,你是指正态(高斯)分布吗?如果是这样,我可以让我的答案更具体。这是某种形式的visual basic。我很确定它是vb.net,vb6和vba不允许你在同一个“语句”中声明和定义。但OP可以确认。。。