使用标准rand()函数从标准正态分布中提取随机数 [英] drawing random number from a standard normal distribution using the standard rand() functions
问题描述
因此,大多数编程语言都包含rand()功能,通过该功能,您可以生成0到1之间的随机数....
So most programming languages contain a rand() functionality whereby you can generate a random number between 0 to 1....
我的问题是,是否有一种方法可以操纵此标准rand()功能,从而使您能够从正态分布中提取具有均值和标准差的随机数?
My question is, is there a way to manipulate this standard rand() functionality such that you are able to instead draw a random number from normal distribution with a mean and standard deviation?
请注意,我不是在询问某种语言是否内置了正态分布功能,而是在询问您是否可以使用rand()函数模拟"绘制正态分布随机变量... >
Notice that I'm not asking whether or not a language has a normal distribution functionality built in, I'm asking if you can "simulate" drawing a normal distribution random variable using a rand() function...
推荐答案
Here is a simple way that works (from here):
static Random r = new Random();
static double Normal(double mu, double sig)
{
double u, v, x, y, q;
do
{
u = r.NextDouble();
v = 1.7156 * (r.NextDouble() - 0.5);
x = u - 0.449871;
y = Math.Abs(v) + 0.386595;
q = Math.Sqrt(x) + y * (0.19600 * y - 0.25472 * x);
} while (q > 0.27597 && (q > 0.27846 || Math.Sqrt(v) > -4.0 * Math.Log(u) * Math.Sqrt(u)));
return mu + sig * v / u;
}
这篇关于使用标准rand()函数从标准正态分布中提取随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!