Language agnostic 实时生成(泊松?)随机变量

Language agnostic 实时生成(泊松?)随机变量,language-agnostic,math,random,real-time,frame-rate,Language Agnostic,Math,Random,Real Time,Frame Rate,我有一个实时运行的程序,具有可变帧速率,例如可以是15 fps,也可以是60 fps。我希望事件平均每5秒发生一次。每一帧,我想调用一个函数,该函数将自上一帧起的时间作为输入,并在给定的调用时间内平均每5秒返回一次True。我想这和泊松分布有关。。我该怎么做呢?这实际上取决于您想要使用什么分布,您指定的只是平均值。正如你所说,我希望泊松分布能很好地满足你的需要,但你也在标题中加入了“均匀随机变量”,这是一个不同的分布,不管怎样,我们还是用前者吧 因此,如果泊松分布是您想要的,您可以使用累积密度函

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

这实际上取决于您想要使用什么分布,您指定的只是平均值。正如你所说,我希望泊松分布能很好地满足你的需要,但你也在标题中加入了“均匀随机变量”,这是一个不同的分布,不管怎样,我们还是用前者吧

因此,如果泊松分布是您想要的,您可以使用累积密度函数非常轻松地生成样本。只需按照此处的伪代码:,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;
global float next\u time=当前时间()
布尔函数foo()
如果(下一次<当前时间())
下一个时间=当前时间()+泊松时间();
返回true;
返回false;

一个随机变量通过独立试验以固定比例生成正确/错误结果,称为A。在任何时间范围内,以1/(5*fps)的概率生成true,从长远来看,平均每5秒会得到一个true。

啊,太好了,我没想到下次会发生这样的情况时会保存一个true。我想到了一个函数,它将被调用,只使用它的输入,并具有该属性。事实上那会很好。。我将在另一个问题中询问,以证明这种方法的合理性,并在此处阅读一些代码: