我有一种方法可以生成随机数,但似乎没有遵循高斯分布,为了进一步复杂化,我将值作为“字节”返回。我真的不知道这个算法是如何工作的,我试着研究维基百科,但收效甚微。有谁知道为什么这似乎不起作用?
private byte RndGaussian(byte mean, byte stdDev)
{
// From stackoverflow 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;
}
答案 0 :(得分:0)
我修复了这个问题(虽然我不知道它为什么会起作用),但只是将值放在stddev中的值除以3,以便实现我想要的值范围。它作为字节返回类型工作正常。