提问者:小点点

函数计算用户按按钮的频率


我得到了一个被其他C++类周期性调用的函数。 下面是一个原型

void onNewButtonPress(int64_t nanoseconds_timestamp, int32_t user_id);

这个函数将在具有user_id的用户每次按下按钮时被调用。 其中nanoseconds_timestamp参数是自纪元以来的时间(以纳秒为单位)

这个函数将需要得到用户按钮按下的速率,基本上是用户每秒按下一个按钮的次数。

如何计算每个用户的费率,存储并定期更新? 是否有可能使用上面的函数或我将不得不创建另一个函数,这将被定期调用,并将计算的比率。

我如何处理用户谁开始按按钮接近结束的期间。 我需要平均吗?

我会很有兴趣听听你根据你的经验提出的意见。


共1个答案

匿名用户

像这样的东西

有一个存储用户时间戳的全局/成员变量

std::map<int32_t> lastClick;

然后计算差值,倒置得到速率:

   void onNewButtonPress(int64_t nanoseconds_timestamp, int32_t user_id) {
      if (auto last = lastClick[user_id]) {
         auto rate = 1000000000 / (nanoseconds_timestamp - last);
         // Use the rate for something
         lastClick[user_id] = nanoseconds_timestamp;
      }
   }