实时生成(泊松分布的?)随机变量

3

我有一个实时运行的程序,帧率可变,例如可以是15 fps,也可以是60 fps。我想要每5秒平均发生一次事件。每一帧,我想调用一个函数,该函数以自上一帧以来的时间为输入,并在平均每5秒经过的时间内返回True,假设已被调用。我觉得这与泊松分布有关..我该如何做?

2个回答

4
这取决于您想使用哪个分布,您只指定了平均值。像您所说的那样,我期望泊松分布能很好地满足您的需求,但是您还在标题中加入了“均匀随机变量”,这是一个不同的分布,无论如何,让我们只考虑前者。
因此,如果您需要泊松分布,可以使用累积密度函数轻松生成样本。只需按照这里的伪代码: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;

啊,很好,我没有想到下次发生这种情况只需要保存。我考虑过创建一个函数,只使用它的输入并具有该属性。实际上这很不错... 我会在另一个问题中提出它。 - Claudiu
关于这种方法的正当性和一些代码,请阅读此处:https://dev59.com/0ljUa4cB1Zd3GeqPUMLV#15307412 - jdbertron

0
一个在独立试验中以固定比例生成真/假结果的随机变量被称为几何随机变量。在任何时间段内,以1/(5*fps)的概率生成真值,在长期运行中,您将获得每5秒钟一个真值的平均值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接