gpt4 book ai didi

algorithm - 选择列表中不存在的号码

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:12 25 4
gpt4 key购买 nike

有没有一种优雅的方法可以创建一个存在于给定 float 列表中的数字?如果这个数字不接近数组中的现有值,那就太好了。

例如,在列表 [-1.5, 1e+38, -1e38, 1e-12] 中,选择一个像 20 这样的数字可能会很好,它是“与不在列表中但非常接近 1e-120.0 相对。

我能想出的唯一算法是创建一个随机数并测试它是否不在数组中。如果是这样,请重生。是否有更好的确定性方法?

最佳答案

这是一种选择不在列表中的随机数字的方法,其中距离现有点越远的概率越高。

  1. 创建概率分布函数f如下:

    f(x) = <到最接近 x 的点的绝对距离>

    这样的函数给出的概率越高,你离给定点越远。 (注意要归一化,使函数下方的面积为1。)

  2. 创建 f 的原始函数 F(即 f 下到给定点的累积面积)。F p>

  3. 生成一个介于 0 和 1 之间的均匀随机数 x(这很简单!:)

  4. 通过将 F 的倒数应用于该值得到最终结果:F-1(x)

这是一张描述现有数字 1.5、2.2 和 2.9 的情况的图片:

enter image description here

以下是其工作原理的直觉:

  • 您拥有的概率越高(蓝线越高),红线越陡

  • 红线越陡x在该点击中红线的可能性就越大。

  • 例如:在给定点,蓝线为0,因此红线是水平的。如果红线是水平的,则 x 命中该点的概率为零。

(如果你想要全范围的 double ,你可以分别将 min/max 设置为 -Double.MAX_VALUE 和 Double.MAX_VALUE。)

关于algorithm - 选择列表中不存在的号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com