Java:基于Poisson的小区域约束点过程
在模拟基于泊松分布的随机点过程时,包含1000个点;它们似乎都占据了窗口中心的一个小区域 我使用Donald Knuth逆采样算法来实现基于泊松的伪随机数生成器 Lambda值(也称为成功率)设置为window_dimension/2,并获得此结果(屏幕截图) 代码: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
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