You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为指数衰减设置指定范围(从20降至5)?

实现固定范围的指数递减序列

你原来的代码用固定底数2做衰减,导致第2步就降到了5,后续还会继续下降,不符合6步从20到5的需求。要实现指定范围的指数递减,需要先计算合适的衰减率,而不是硬用固定底数。

推导思路

指数衰减的通用公式可以表示为:当前值 = 最大值 × (衰减率)^(步数-1)
我们需要满足:第1步值为max(20),第x(6)步值为min(5),代入公式可得:

5 = 20 × (衰减率)^(6-1)

计算得衰减率:衰减率 = (5/20)^(1/5) ≈ 0.75786

修改后的代码

const data = []
const x = 6
const max = 20
const min = 5

// 计算精准衰减率
const decayRate = Math.pow(min / max, 1 / (x - 1))

for (let index = 1; index <= x; index++) {
    // 按指数公式计算当前值
    let value = max * Math.pow(decayRate, index - 1)
    // 最后一步强制用min,避免浮点数计算误差
    data.push(index === x ? min : value)
}

console.log(data)

运行后输出结果(保留三位小数):

20, 15.157, 11.491, 8.707, 6.599, 5

更简洁的写法

也可以直接在循环里计算指数,不用单独声明衰减率:

const data = []
const x = 6
const max = 20
const min = 5

for (let index = 1; index <= x; index++) {
    const exponent = (index - 1) / (x - 1)
    let value = max * Math.pow(min / max, exponent)
    data.push(index === x ? min : value)
}

内容的提问来源于stack exchange,提问作者user3142695

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:00:57