一尘不染

随机高斯变量

c#

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


阅读 294

收藏
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