我正在使用MS Visual Studio 2010。
现在我想通过对数正态分布生成一个介于3到200之间的随机数。
[我听说“中心极限定理”可以将均匀分布转换为正态分布,但是这对我来说似乎太有用了,因为我的范围有198个数字:
a = random(MaxRange+1); // mean i have to write this for 198 time???!!!!
x = (a+.......)/198 ; //this will obtain a number which is a normal distribution right???
然后,我可以写信
y = log (x); // and is this mean that y is log normal distribution????
感谢您回答我的问题。...
很好的随机数将为您提供正确分配的均匀分布的随机数。为了生成具有正态分布的变量,您可以使用易于实现的Box-Muller transformation。
接下来,您需要生成对数正态变量v
。通过计算v = exp(mu + sig * n)
,其中n
是您的正态分布随机变量。
我不太了解您在3到200范围内的含义,因为对数正态分布支持] 0,inf [
您可能想看看lognormal_distribution
中的Boost random library类。有关如何从给定的分布中生成数字的示例,请参见here(您必须使用给定的随机数生成器加上该分布的一个实例来实例化boost::variate_generator
。)>
进一步了解Azrael3000的答案,