小编典典

随机高斯变量

c#

.NET标准库中是否有一个类可以为我提供创建遵循高斯分布的随机变量的功能?


阅读 327

收藏
2020-05-19

共1个答案

小编典典

Jarrett建议使用Box-Muller变换对于快速而又肮脏的解决方案很有用。一个简单的实现:

Random rand = new Random(); //reuse this if you are generating many
double u1 = 1.0-rand.NextDouble(); //uniform(0,1] random doubles
double u2 = 1.0-rand.NextDouble();
double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) *
             Math.Sin(2.0 * Math.PI * u2); //random normal(0,1)
double randNormal =
             mean + stdDev * randStdNormal; //random normal(mean,stdDev^2)
2020-05-19