我没有找到任何有关此主题的帮助,因此我发布了一个有关此问题的新问题。我有一个变量,包含三个值{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);
}