【问题标题】:drawing random number from a standard normal distribution using the standard rand() functions使用标准 rand() 函数从标准正态分布中抽取随机数
【发布时间】:2012-02-03 02:54:08
【问题描述】:
所以大多数编程语言都包含一个 rand() 功能,您可以通过它生成一个介于 0 到 1 之间的随机数......
我的问题是,有没有办法操纵这个标准的 rand() 功能,以便您能够从具有均值和标准偏差的正态分布中提取随机数?
请注意,我不是在问一种语言是否内置了正态分布功能,我是在问你是否可以使用 rand() 函数“模拟”绘制正态分布随机变量...
【问题讨论】:
标签:
math
variables
random
statistics
numbers
【解决方案1】:
这是一个简单的方法(来自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;
}