【发布时间】:2011-06-26 16:36:31
【问题描述】:
我有一个实时运行的程序,具有可变帧率,例如可以是 15 fps,也可以是 60 fps。我希望平均每 5 秒发生一次事件。每一帧,我想调用一个函数,该函数将自上一帧以来的时间作为输入,并在调用它的情况下平均每 5 秒返回一次 True。我想与泊松分布有关。我该怎么做?
【问题讨论】:
标签: language-agnostic math random real-time frame-rate
我有一个实时运行的程序,具有可变帧率,例如可以是 15 fps,也可以是 60 fps。我希望平均每 5 秒发生一次事件。每一帧,我想调用一个函数,该函数将自上一帧以来的时间作为输入,并在调用它的情况下平均每 5 秒返回一次 True。我想与泊松分布有关。我该怎么做?
【问题讨论】:
标签: language-agnostic math random real-time frame-rate
通过独立试验以固定比例生成真/假结果的随机变量称为Geometric random variable。在任何时间范围内,以 1/(5*fps) 的概率生成 true,从长远来看,您将平均每 5 秒得到一个 true。
【讨论】:
这真的取决于你想使用什么分布,你指定的只是平均值。就像您说的那样,我希望泊松分布能够很好地满足您的需求,但是您还将“均匀随机变量”放在标题中,这是一个不同的分布,无论如何让我们使用前者。
因此,如果您需要泊松分布,您可以使用累积密度函数非常轻松地生成样本。只需遵循此处的伪代码: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;
【讨论】: