高斯随机数生成器似乎不起作用
Gaussian Random number generator seems not to be working
我有一个生成随机数的方法,但似乎不遵循高斯分布,为了进一步复杂化,我将返回值作为 'byte'。我真的不知道这个算法是如何工作的,我尝试在维基百科上进行研究但收效甚微。有谁知道为什么这似乎不起作用?
private byte RndGaussian(byte mean, byte stdDev)
{
// From Whosebug user 'yoyoyoyosef'.
double u1 = rnd.NextDouble(); // These are uniform(0,1) random doubles
double u2 = rnd.NextDouble();
double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2); // Random normal(0,1)
byte randNormal = Convert.ToByte(mean + stdDev * randStdNormal); // Random normal(mean,stdDev^2)
return randNormal;
}
我解决了这个问题(虽然我不知道它为什么起作用)但只是将我在 stddev 中输入的值除以 3,这样就达到了我想要的值范围。它作为字节 return 类型工作正常。
我有一个生成随机数的方法,但似乎不遵循高斯分布,为了进一步复杂化,我将返回值作为 'byte'。我真的不知道这个算法是如何工作的,我尝试在维基百科上进行研究但收效甚微。有谁知道为什么这似乎不起作用?
private byte RndGaussian(byte mean, byte stdDev)
{
// From Whosebug user 'yoyoyoyosef'.
double u1 = rnd.NextDouble(); // These are uniform(0,1) random doubles
double u2 = rnd.NextDouble();
double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2); // Random normal(0,1)
byte randNormal = Convert.ToByte(mean + stdDev * randStdNormal); // Random normal(mean,stdDev^2)
return randNormal;
}
我解决了这个问题(虽然我不知道它为什么起作用)但只是将我在 stddev 中输入的值除以 3,这样就达到了我想要的值范围。它作为字节 return 类型工作正常。