0

我有一个柜台点票。但是,我只从服务器中提取 30 秒的数字。我希望它在前端看起来相当一致,所以我编写了一个小脚本来跟踪增加的情况,并给它一个很好的线性增加选票,每秒多次。

然而,我似乎不能很好地在不同的速率之间转换——我的大脑锁定了超过线性。

示例: 假设我们有 100 票。

预计投票数将在接下来的 30 秒内增加 60,或每 1 秒增加 2 票 (2/1)。我已经可以做到那么远了。

30 秒后,我们从线性收益中获得了 160 票。

现在,预计下一段将在 30 秒内仅增加 20 票,或每 3 秒 (2/3) 2 票。

我不想让投票率突然下降,而是希望在 30 秒后我将获得正确的(180)总票数,计数器会减速(或相应地加速)而不是突然线性变化收益。

var t = 0;
function upCount(){
  $("#votecount").text(Math.floor(current + nextInc*(t/60));
  t++;
}

current是从服务器报告的当前投票数,并且nextInc是在接下来的 30 秒内发生的预测投票数。

t是“时间”,每次从服务器拉取ajax时重置为零。这是在 500 毫秒的间隔内。

也许我做错了。欢迎疯狂的想法。如果有帮助,我可以在这里使用 jQuery。

谢谢!

4

1 回答 1

0

对您的费率应用指数过滤器怎么样?那是

smoothed_rate = (current_rate + c*smoothed_rate) / (1+c)

这为您提供了一个参数 c 来调整平滑。c=0 --> 完全没有平滑。更大的 c --> 更平滑。

如果您还想平滑费率变化,请引入更多积分。您不需要额外的服务器往返。只需复制你得到的。例如,如果您计算 30 秒的速率 x,则假设 3 个间隔,速率 x 为 10 秒,并对它们应用平滑。这为您提供了更高阶的平滑,几乎不需要额外的努力。

于 2013-02-20T21:37:59.087 回答