本文介绍了随机但很可能是1个浮动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想随机化一个浮点数,以便
I want to randomize a float that so that
- 有95%的几率约为1
- 有0.01%的机会成为<0.1或> 1.9
- 它永远不会变成0或2
例如可以多次使用 Random.nextFloat()
来做到这一点吗?
Is this possible by using Random.nextFloat()
several times for example?
概率的视觉图示:
推荐答案
您需要找到一个函数 f 这样:
You need to find a function f such that:
-
f是连续的,并在[0,1]上增加
f is continuous and increasing on [0, 1]
f(0)> 0并且f(1)<2
f(0) > 0 and f(1) < 2
f(0.01)> = 0.1和f(0.99)< = 1.9
f(0.01) >= 0.1 and f(0.99) <= 1.9
f(x)为0.025时的大约1"
f(x) is "about 1" for 0.025 <= x <= 0.975
然后取 f(Random.nextDouble())
例如, Math.tan(3 *(x-0.5))/14.11
符合此要求,因此对于您的表达,我将使用:
For example, Math.tan(3*(x-0.5))/14.11
fits this, so for your expression I'd use:
Math.tan(3*(Random.nextDouble()-0.5))/14.11
概率分布为:
这篇关于随机但很可能是1个浮动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!