我没有找到任何有关此主题的帮助,因此我发布了一个有关此问题的新问题。我有一个变量,包含三个值{min,average,standard dev。}。如何生成此数组的对数正态分布,该分布将随机为我提供对数正态分布的时间值。另外,如果我将其运行1000次,则希望从1000次对数正态分布中随机获取时间值。我将如何用Java代码编写此代码?另外我猜它运行1000次会得到数组中平均值的平均值吗?

最佳答案

首先生成标准正态值,并将其转换为具有给定参数的正态分布。最后提高到指数以获得具有给定均值和标准差的对数正态分布。

Random rng = new Random(0);
double[] lognormalValues = new double[1000];

for (int i = 0; i < 1000; ++i)
{
    stdNormal   = rng.nextGaussian();
    normalValue = stddev*stdNormal + mean;

    logNormalValues[i] = Math.exp(normalValue);
}

10-07 19:10
查看更多