.NET的标准库中是否有一个类可以创建遵循高斯分布的随机变量的功能?
给定整数范围的开始和结束,如何计算此范围之间的正态分布随机整数?
我意识到正态分布进入 - +无穷大.我猜尾巴可以被截断,所以当一个随机数被计算到范围之外时,重新计算.这提高了范围内整数的概率,但只要这种效果可以容忍(<5%),就可以了.
public class Gaussian
{
private static bool uselast = true;
private static double next_gaussian = 0.0;
private static Random random = new Random();
public static double BoxMuller()
{
if (uselast)
{
uselast = false;
return next_gaussian;
}
else
{
double v1, v2, s;
do
{
v1 = 2.0 * random.NextDouble() - 1.0;
v2 = 2.0 * random.NextDouble() - 1.0;
s = v1 * v1 + v2 * v2;
} while (s >= 1.0 || s == …Run Code Online (Sandbox Code Playgroud)