Java:基于Poisson的小区域约束点过程

Java:基于Poisson的小区域约束点过程,java,processing,simulation,poisson,Java,Processing,Simulation,Poisson,在模拟基于泊松分布的随机点过程时,包含1000个点;它们似乎都占据了窗口中心的一个小区域 我使用Donald Knuth逆采样算法来实现基于泊松的伪随机数生成器 Lambda值(也称为成功率)设置为window_dimension/2,并获得此结果(屏幕截图) 代码: public double getPoisson(double lambda) {//250 double L = Math.exp(-lambda); double p = 1d; int k = 0

在模拟基于泊松分布的随机点过程时,包含1000个点;它们似乎都占据了窗口中心的一个小区域

我使用Donald Knuth逆采样算法来实现基于泊松的伪随机数生成器

Lambda值(也称为成功率)设置为window_dimension/2,并获得此结果(屏幕截图)

代码:

public double getPoisson(double lambda) {//250
    double L = Math.exp(-lambda);
    double p = 1d;
    int k = 0;
    do {
        k++;
        p *= Math.random();
    } while (p > L);

    return k-1;
}

`在我看来,问题在于您认为输出应该是什么,因为程序似乎正在生成您所要求的内容。速率为500的A的期望值和方差都等于500,对于λ的大值,它是非常对称和钟形的。综上所述,所有这些都意味着标准差为
sqrt(500)
,略小于22.4,因此您应该预计约95%的收入为500±45,这看起来像是你得到的

随后的编辑(在注释中)说λ=250,结果的表现类似。每个维度的结果可能范围为250±31,仍然向中心聚集

通过创建具有标准偏差的泊松随机变量,很容易确认我的解释,例如±3σ跨越绘图区域。 你需要一个更大的方差/标准差来增加结果在整个窗口中的分布。为了演示这一点,我使用了泊松(6400)——标准偏差为80,减去6150,得到的结果平均值为250。因此,绝大多数值将介于0和500之间。我生成了1000对独立的值,并使用JMP统计软件包绘制它们,结果如下:

就为了jollies,这里有一个正常(250,80)的独立配对图:

他们看起来很像,不是吗

重申一下,您使用的泊松算法没有错。它正在做你让它做的事情,即使这不是你期望的结果


补遗 由于您不相信这一点,以下是您的具体案例的一些直接证据,同样由JMP生成:


左侧是1000个随机生成的泊松(250)值的直方图。注意形状良好的钟形。我让JMP根据选择最佳连续分布拟合。它选择了正态性作为最佳拟合,诊断结果在右边,得到的密度图以红色叠加在直方图上。结果本身就是明证。

在我看来,问题在于您认为输出应该是什么,因为程序似乎正在生成您要求的内容。速率为500的A的期望值和方差都等于500,对于λ的大值,它是非常对称和钟形的。综上所述,所有这些都意味着标准差为
sqrt(500)
,略小于22.4,因此您应该预计约95%的收入为500±45,这看起来像是你得到的

随后的编辑(在注释中)说λ=250,结果的表现类似。每个维度的结果可能范围为250±31,仍然向中心聚集

通过创建具有标准偏差的泊松随机变量,很容易确认我的解释,例如±3σ跨越绘图区域。 你需要一个更大的方差/标准差来增加结果在整个窗口中的分布。为了演示这一点,我使用了泊松(6400)——标准偏差为80,减去6150,得到的结果平均值为250。因此,绝大多数值将介于0和500之间。我生成了1000对独立的值,并使用JMP统计软件包绘制它们,结果如下:

就为了jollies,这里有一个正常(250,80)的独立配对图:

他们看起来很像,不是吗

重申一下,您使用的泊松算法没有错。它正在做你让它做的事情,即使这不是你期望的结果


补遗 由于您不相信这一点,以下是您的具体案例的一些直接证据,同样由JMP生成:


左侧是1000个随机生成的泊松(250)值的直方图。注意形状良好的钟形。我让JMP根据选择最佳连续分布拟合。它选择了正态性作为最佳拟合,诊断结果在右边,得到的密度图以红色叠加在直方图上。结果本身就是明证。

我们不想看到完整的代码。但是我们需要看到足够的代码来发现问题。换句话说,请把你的问题缩小到一个小范围,然后贴出来。你试过调试你的代码吗?您已经尝试调整了哪些参数?你到底希望这段代码做什么呢?我改变了Lambda的值(太小导致窗口上没有可见的变化,大值也是如此)。我将提供与此方法相关的类,正如我所说的,我们需要看到一个。我们不希望只看到与此方法相关的类。您应该尝试创建一个包含尽可能少的行的最小程序,但是我们可以复制并粘贴到我们自己的机器上,以准确地了解您所谈论的内容。还要注意,您已经用and标记了它,这往往会吸引不熟悉处理的Java开发人员的大量反对票。另请参见:。对不起,我不是想惹人生气,但您刚刚发布的课程并没有告诉我们太多。我们需要看看这些点是如何得到它们的位置的,以及它们是如何被画出来的。请尝试将其缩小为MCVE,而不是发布整个项目。我们不希望看到完整的代码。但是w