【问题标题】:How do I sum intervals in a deterministic Poisson Process?如何在确定性泊松过程中求和间隔?
【发布时间】:2013-10-28 03:38:11
【问题描述】:

我正在制作一个需要生成确定性随机事件的应用。它们需要具有确定性,以便我可以计算应用程序关闭时发生的事件。 我想找到一个函数 f(time1, time2) 告诉我在任意两个时间点之间发生了多少事件,而不生成完整的过程。也应该是 f(t1,t3) = f(t1,t2) + f(t2, t3)。

我从 this question 开始,但开始了这个新的,所以我现在可以重写它,因为我对我在寻找什么有了更好的了解。

I've started a question on Math Overflow about finding a formula for f since it seems to be more of a math problem than a coding problem.

【问题讨论】:

    标签: algorithm math poisson stochastic-process


    【解决方案1】:

    如果我理解您的限制,您 (A) 不想存储您的流程,因为它很大。 (B) 出于同样的原因,不想重复生成进程。但您可以尝试混合策略。

    获取任何随机数生成器 R,您可以 (A) 确定性地播种并 (B) 读取状态(请参阅下文如何伪造它)。

    现在:

    • 存储R.state(或使用硬编码设置)
    • 生成N 样本并使用它们来生成您的泊松过程。
    • 存储(时间、泊松 CDF、R.state)的三元组

    稍后当您回顾您的数据时,您可以找到之前的最后一次 感兴趣的区间,查找 R.state 和 CDF 并开始重新生成 你的泊松过程。您永远不必生成超过N 的额外样本,但您只需存储每个Nth 状态。

    现在如何存储随机数生成器的状态?其中一些具有用于读取其状态的 API 函数。另一个技巧是使用两个生成器,R1R2。然后使用R1 每N 个点播种R2R1 的值就是您存储的“状态”。

    【讨论】:

      【解决方案2】:

      让我们重写问题。假设您的f 存在。然后,您可以使用二进制搜索找到下一个事件的时间,达到您想要的任何精度。所以先构造f

      那么我们如何创建f?好吧,我们只需要从0 到任意t 再到f(s, t) = f(0, t) - f(0, s) 计算f

      我们甚至不需要为每个t 直接计算它。如果我们可以在每个整数上计算它,并且如果我们在区间的两端都有它,如果我们可以在中点计算它,那就足够了。由于f 是非递减的并且始终是整数,所以二分算法最终会导致t 夹在我们知道f 具有相同值的两个点之间。

      现在我们有了一个方法。我们将以整数计算。然后,一旦我们将t 夹在中间,就开始平分,直到我们得到相同的f(0,t) 的下限和上限。

      我们可以通过生成一个随机数来从整数到整数,然后使用泊松分布来找出发生了多少事件。如果我们知道f 在一个区间的两端,我们可以用同样的技巧在中点找到它,但是这次知道在区间的前半部分发生的事件的数量是由二项分布描述的。

      担心我们需要一个带有 2 个不相关的“下一步移动”选项的伪随机生成器的诀窍。其中一个用于当我们将下一个区间/土地移动到区间的上半部分时。另一个用于当我们停止移动区间/降落在区间的下半部分时。我们需要在两者之间行走的路径,而不是给出相同的答案。否则,您的随机事件将以奇怪的周期性方式分布。我建议通过使用两个使用相同范围内的种子的不同生成器来做到这一点。 (如果它们很接近,但不一样,你可以重复你正在做的那个,直到种子在共同范围内结束......)你使用哪个生成器取决于最后一次翻转带你的方向。

      找出正确的使用方法可能需要一些思考。但希望这比您开始的问题更容易解决!

      【讨论】:

      • 在“我们甚至不需要每个 t...”部分之后,我无法遵循您的回答。如果您可以发布一些用于计算 f 的代码或一些更具体地定义它的数学符号,我可能会更清楚。
      • @Nathan 现在解释的结尾是否更有意义?
      • 您正在谈论通过使用随机数生成器计算每个整数间隔来动态创建 f。我希望能够从一个看似随机的固定数学公式计算 f。
      猜你喜欢
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 2023-03-23
      相关资源
      最近更新 更多