Random 平均5个均匀样本的正态随机数?

Random 平均5个均匀样本的正态随机数?,random,normal-distribution,Random,Normal Distribution,查看我们应用程序中的一些遗留代码,发现了这个普通RNG的奇怪实现。我想把它换成一个合适的Box-Muller变换,但需要一些鼓励 如您所见,它生成5个从-3.875到+3.875的随机数,然后对它们进行平均,得到一个从-1到+1的准正态分布值。这可能是对的吗?这怎么行得通呢?为什么是5个样品 有人,请解释一下: private double GetRandomNormalNumber() { const double SPREAD = 7.75; const do

查看我们应用程序中的一些遗留代码,发现了这个普通RNG的奇怪实现。我想把它换成一个合适的Box-Muller变换,但需要一些鼓励

如您所见,它生成5个从-3.875到+3.875的随机数,然后对它们进行平均,得到一个从-1到+1的准正态分布值。这可能是对的吗?这怎么行得通呢?为什么是5个样品

有人,请解释一下:

private double GetRandomNormalNumber()
    {
      const double SPREAD = 7.75;
      const double HALFSPREAD = 3.875;
      var random = new Random();

      var fRandomNormalNumber = ((random.NextDouble()*SPREAD - HALFSPREAD) +
                                 (random.NextDouble()*SPREAD - HALFSPREAD) +
                                 (random.NextDouble()*SPREAD - HALFSPREAD) +
                                 (random.NextDouble()*SPREAD - HALFSPREAD) +
                                 (random.NextDouble()*SPREAD - HALFSPREAD)
                                )/5;

      return fRandomNormalNumber;
    }

通过对几个随机均匀样本求平均值来近似正态分布是标准的,这是随机分布的结果。通常采集12个样本。在你的情况下,有人决定只取五个样本,也许是为了提高效率


看看

通过平均几个随机均匀样本来近似正态分布是标准的,这是。通常采集12个样本。在你的情况下,有人决定只取五个样本,也许是为了提高效率


看看

代码似乎是正确的,它只会导致0.0附近的区域比范围的边缘有更高的概率(-HALFSPREAD,HALFSPREAD)

我怀疑这5个数字是不是一个计算得很好的值,很可能是“因为它起作用”才选择的


如果您要用另一个RNG替换一个RNG,您应该能够:只要替换件具有更好的实用特性,没有人应该依赖现有RNG的特定输出。代码似乎是正确的,它只会导致0.0附近的区域比范围的边缘有更高的概率(-HALFSPREAD,HALFSPREAD)

我怀疑这5个数字是不是一个计算得很好的值,很可能是“因为它起作用”才选择的


如果您要用另一个RNG替换一个RNG,您应该能够:只要替换具有更好的实用特性,没有人应该依赖现有RNG的特定输出,但因为单个均匀随机变量从[0..1]的方差是1/12(正如它是E[x^2]-E[x]^2=1/3-1/4=1/12),所以12个这样的数字之和给出的方差是1。所以当你加上12个,减去6,你会得到一个标准的正态随机变量,平均值=0,方差=1。谢谢,参考中心极限定理是我要找的。注意,通常取12个数字并不是因为CLT,而是因为单个均匀随机变量从[0..1]的方差是1/12(因为它是E[x^2]-E[x]^2=1/3-1/4=1/12),所以12个这样的数字加起来的方差为1。所以当你加上12个,减去6个,你得到一个标准的正态随机变量,平均值=0,方差=1。