在Java中生成一个带有max,min和mean(average)的随机数

Fua*_*kov 20 java random average max min

我需要生成具有以下属性的随机数.

最小应该是200

Max应该是20000

平均值(平均值)是500.

可选:第75百分位为5000

绝对不是均匀分布,也不是高斯分布.我需要给出一些左偏斜.

Sco*_*ott 12

Java Random可能不起作用,因为它只给你正常(高斯)分布.

您可能正在寻找的是f分布(见下文).你可以在这里使用distlib库并选择f分布.您可以使用随机方法获取随机数.

在此输入图像描述


leo*_*loy 8

Say X是你的目标变量,让我们通过做法来规范化范围Y=(X-200)/(20000-200).所以现在你想要一些带有均值的Y随机变量.[0,1](500-200)/(20000-200)=1/66

你有很多选择,最自然的一个在我看来,一个Beta分布, Y ~ Beta(a,b)a/(a+b) = 1/66-你有一个额外的自由度,你可以选择适合的最后四分位数的要求.

之后,您只需将X返回为 Y*(20000-200)+200

要生成Beta随机变量,您可以使用Apache Commons在此处查看.