gpt4 book ai didi

algorithm - 快速增加并减慢达到预定义最大值的功能

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

我正在创建一个计数算法,在该算法中,我以更大的增量增加数字,然后随着时间的推移增量变小,理想情况下达到零或 1。最终的总和值应该是预定义的。步骤数应该是一个输入参数并且可以变化。它似乎是一个具有最大值的对数函数。然而,对数函数会增长到无穷大。

我发现最好的是对数的平方根:

val log = (1..10).map { Math.sqrt(Math.log(it * 1.0)) }
val max = log.max()
val rounded = log.map { it * 1000 / max!! }.map { Math.round(it) }

rounded.forEachIndexed { i, l ->
if (i + 1 < rounded.size)
println("${rounded[i + 1] - rounded[i]}")
}

但是,我最终还是没有得到非常小的增量。如果范围是从 0 到 10: 549、142、85、60、46、37、31、27、23如果范围是 20:481、125、74、53、40、33、27、23、21、18、16、14、14、12、11、10、10、9、9

最后用什么算法得到1?

更新:基于 Patricks 公式,我做了这个解决方案:

`  val N = 18981.0
val log = (1..50).map { N - N/it }
val max = log.max()
log.map { print("$it, ") }
val rounded = log.map { it * N / max!! }.map { Math.round(it) }`

重要的是 NDouble 而不是整数

最佳答案

对数的平方根也增长到无穷大。尝试

f(n) = N - N/n

这在 n = 1 时具有值 0,并且随着 n 无限增长而趋向于 N。如果您需要更精细的粒度,请添加一些系数并尝试使用它们,直到获得合理的值。例如,您可以使用 [1 + (n/1000)] 并获得类似但慢得多的增长。您还可以使用 exp(-x) 或任何具有水平渐近线的函数并获得类似的行为。

f(n) = N - exp(-n)

同样,添加一些系数,看看函数如何变化

关于algorithm - 快速增加并减慢达到预定义最大值的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54696759/

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