【问题标题】:Generate (Poisson?) random variable in real-time实时生成(泊松?)随机变量
【发布时间】:2011-06-26 16:36:31
【问题描述】:

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

【问题讨论】:

    标签: language-agnostic math random real-time frame-rate


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这真的取决于你想使用什么分布,你指定的只是平均值。就像您说的那样,我希望泊松分布能够很好地满足您的需求,但是您还将“均匀随机变量”放在标题中,这是一个不同的分布,无论如何让我们使用前者。

      因此,如果您需要泊松分布,您可以使用累积密度函数非常轻松地生成样本。只需遵循此处的伪代码: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;
      

      【讨论】:

      • 啊,太好了,我没想到只是在下次发生时保存。我想到了一个函数,它只被调用,只使用它的输入,并拥有那个属性。实际上那会很整洁..我会在另一个问题中问它
      • 为了证明这种方法的合理性和阅读这里的一些代码:stackoverflow.com/a/15307412/1650437
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多