gpt4 book ai didi

c++ - 修改对数曲线上的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:08 24 4
gpt4 key购买 nike

我有一个值是 0-100 的浮点百分比值,x,另一个值是 0-1 的浮点值,y。随着 y 越来越接近于零,它应该在对数曲线上减小 x 的值。

例如,假设 x = 28.0fy = 0.8f。由于 0.8f1.0f 相差不远,因此它应该只将 x 的值减少一点点,比如将其降低到x = 25.0f 或类似的东西。随着 y 越来越接近于零,它应该越来越大幅度地减少 x 的值。我能想到的唯一方法是使用对数曲线。我知道我想要它做什么,但我终其一生都无法弄清楚如何在 C++ 中实现它。这个算法在 C++ 中会是什么样子?

最佳答案

听起来你想要这个:

new_x = x * ln((e - 1) * y + 1)

我假设您有自然对数函数 ln 和常量 ex 的乘积是 y 的对数函数,当 y = 0 时为 0,当 y = 1 时为 1。

这是该函数背后的逻辑(这基本上是一个数学问题,而不是编程问题)。您需要看起来像 ln 函数的东西,首先急剧上升然后趋于平稳。但是你希望它从 (0, 0) 开始,然后经过 (1, 1),而 ln 从 (1, 0) 开始,经过 (e, 1)。这表明在执行 ln 之前,您需要执行一个简单的线性移位,将 0 转换为 1,将 1 转换为 e:((e - 1) * y + 1

关于c++ - 修改对数曲线上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242197/

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