泊松变数, ? 连接和到达率,Java网络模拟

Gio*_*kis 2 java simulation networking poisson

我正在开发一个网络模拟器,其中数据包到达和传输尝试的事件遵循泊松分布。我对 Knuth 算法进行了改编:

\n\n
public class Poisson {\n\n    private double \xce\xbb;\n    private Random rand;\n\n    /** Creates a variable with a given mean. */\n    public Poisson(double \xce\xbb) {\n        this.\xce\xbb = \xce\xbb;\n        rand = new Random();\n    }\n\n    public int next() {\n        double L = Math.exp(-\xce\xbb);\n        double p = 1.0;\n        int k = 0;\n\n        do {\n            k++;\n            p *= rand.nextDouble();\n        } while (p > L);\n\n        return k - 1;\n\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的规范规定节点使用泊松过程随机重新安排楼层。平均到达间隔时间呈指数分布,平均值 Ts = 2.5ms。我使用 \xce\xbb = 2.5 是否正确?

\n\n

当我想举办新到货活动时,我会这样做:

\n\n
Event evt = new Event(EventType.ARRIVAL_EVENT,\n    MasterClock.getTime + poisson.next());\neventList.add(evt);\n
Run Code Online (Sandbox Code Playgroud)\n\n

据称,模拟器会运行多次,每次都会增加负载来测量性能。起初我认为到达率等于 \xce\xbb 但 \xce\xbb 越大,每秒收到的数据包越少。到达率和\xce\xbb有什么关系?\n我对这篇很长的文章感到抱歉,但我真的很沮丧,因为在大量大学书籍和整个互联网上搜索却没有有效的网络模拟来源......

\n\n

预先感谢您的帮助。

\n

tot*_*to2 5

这可能看起来很奇怪,但对于泊松过程,您不需要泊松分布,而是指数分布。看看维基百科

您在代码中模拟的到达间隔时间遵循参数 lambda = 1 / 2.5 的指数分布(lambda 是平均值的倒数)。您可以使用 -Math.log(1.0 - rand.nextDouble()) / lambda 轻松获得随机指数变量。

泊松过程有两种视图: 上述视图保持事件数量固定 (1),而时间间隔变化。另一种观点保持时间间隔固定,但该间隔内的事件数量是随机变量(并遵循泊松分布)。