你需要找到一个函数f,这样:
f是连续的并且在[0,1]上增加
f(0)> 0且f(1)<2
f(0.01)> = 0.1且f(0.99)<= 1.9
对于0.025 <= x <= 0.975,f(x)为"约1"
然后拿走 f(Random.nextDouble())
例如,Math.tan(3*(x-0.5))/14.11适合这个,所以对于你的表达我会使用:
Math.tan(3*(Random.nextDouble()-0.5))/14.11
Run Code Online (Sandbox Code Playgroud)
概率分布如下: