本文介绍了随机但很可能是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:

  1. f是连续的,并在[0,1]上增加

  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个浮动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 18:34