【发布时间】:2021-12-22 21:52:12
【问题描述】:
鉴于 min = 0.00,max = 1400.00,mean = 150.50,标准差 = 25.00,如何根据这些统计数据生成随机值?据我了解,该图是一个倾斜图,但是我不太确定它是否是对数正态分布的。但是,据我目前的理解,以下代码返回一个来自正态分布的值。
private static int generateValue(double mean, double stdDev) {
return (rand.nextGaussian() * stdDev) + mean);
}
【问题讨论】:
-
这是一个统计建模问题,而不是编程问题。您的分布既不能是正态分布也不能是对数正态分布,因为它们都有无限的支持,并且您指定了有限的最小值和最大值。您需要确定一个能够同时满足所有四个约束的分布,这是不平凡的并且可能不可行。示例:我们可以排除三角分布,因为
mean = (min + mode + max) / 3。使用您的约束求解模式会产生 -948.5,但模式必须是介于最小值和最大值之间的值,因此不存在这样的三角形。 -
明白,但是,鉴于以上这些值,有没有办法正确获取随机生成的值?
-
不知道要从哪个发行版生成。这就是为什么我说“你需要确定一个分布......”
-
嗨@pjs,鉴于分布是连续分布,有可能吗?
-
找到了一种使用缩放的 beta 发行版的方法。在过去的 15 年里,我不是 java 人(甚至没有在我的系统上安装它),但如果你有兴趣,我可以用 python 解释。
标签: java statistics distribution