我有一个实时运行的程序,帧速率可变,例如可以是15 fps,可以是60fps。我希望平均每5秒发生一次事件。每帧,我想调用一个函数,该函数将自上一帧以来的时间作为输入,并在调用时平均每隔5秒返回一次True。我认为与泊松分布有关。我该怎么做?

最佳答案

它实际上取决于要使用的分布,您指定的只是平均值。就像您说的那样,我希望Poisson分布可以很好地满足您的需求,但是您也可以在标题中放置“统一随机变量”,这是一个不同的分布,无论如何,我们还是只使用前者。

因此,如果您需要泊松分布,则可以使用累积密度函数轻松地生成样本。只需遵循以下伪代码:Generating Poisson RVs,其中5秒钟就是lambda的值。我们将此函数称为Poisson_RN()。

此时的算法非常简单。

global float next_time = current_time()

boolean function foo()
if (next_time < current_time())
  next_time = current_time() + Poisson_RN();
  return true;
return false;

08-07 14:37