来自维基百科的这张图片有一个很好的例子,说明了我想要产生的那种函数:
现在我正在使用Irwin-Hall分布,它或多或少是高斯分布的多项式近似...基本上,你使用均匀随机数发生器并迭代x次,取平均值。迭代次数越多,就越像高斯分布。
非常好;但是我希望能够有一个我可以改变平均值的地方。例如,假设我想要一个0到10之间的数字,但在 7之间。就像,平均值(如果我多次重复这个函数)会变成7,但实际上是范围是0-10。
我应该查一下,还是应该用标准高斯分布做一些奇特的数学?
答案 0 :(得分:1)
我发现你的问题存在矛盾。从一侧你想要正常分布对称由它的本质,从另一方面你想要不对称地放置范围到平均值。
我怀疑你应该试着看看其他分布的密度函数,如钟形曲线但不对称。与log distribution或beta distribution一样。
答案 1 :(得分:0)
查看generating normal random variates。您可以生成一对正态随机变量X = N(0,1)并将其转换为任意正态随机变量Y = N(m,s)(Y = m + s * X)。
答案 2 :(得分:0)
听起来Truncated Normal分布正是医生所要求的。它本身并不“计算简单”,但如果您有正态分布的现有实现,则易于实现。
您可以使用您想要的平均值,所需的标准差以及您想要的两端来生成分布。您必须事先做一些工作来计算基础(非截断)正态分布的均值和标准差,以获得您想要的TN的均值,但您可以使用该文章中的公式。另请注意,您也可以使用此方法调整方差:)
我有Java代码(基于Commons Math框架),用于此分发的accurate (slower)和quick (less accurate)实现,包括PDF,CDF和抽样。