Matlab 如果知道数据包遵循泊松分布,如何计算数据包的下一个出现间隔?

Matlab 如果知道数据包遵循泊松分布,如何计算数据包的下一个出现间隔?,matlab,frame,packet,Matlab,Frame,Packet,假设您有一些计算机站,这些计算机站正在向网络发送数据包 现在,数据包的传输时间为S秒 所有计算机站将发送的数据包数量遵循泊松分布 因此,在给定帧时间生成L个分组的概率为Pr[k]=(λ^(L)*e ^(-λ))/(L!) 现在,我想通过在每一步计算下一个发生间隔来模拟这一点,这是站点生成下一个数据包的间隔 我找到了一些代码,我得到了如下等式: next_occurrence_interval= 1/λ * log(1/(1-rand)) 如果我没记错的话,兰德给出了一

假设您有一些计算机站,这些计算机站正在向网络发送数据包

现在,数据包的传输时间为S秒 所有计算机站将发送的数据包数量遵循泊松分布

因此,在给定帧时间生成L个分组的概率为Pr[k]=(λ^(L)*e ^(-λ))/(L!)

现在,我想通过在每一步计算下一个发生间隔来模拟这一点,这是站点生成下一个数据包的间隔

我找到了一些代码,我得到了如下等式:

            next_occurrence_interval= 1/λ  * log(1/(1-rand))

如果我没记错的话,兰德给出了一个从0到1的随机数。我试图理解,这到底是什么,这个方程是从哪里来的,这样我就可以在我的网络模拟程序中使用它。这是一个泊松过程,它描述了事件以给定的平均速率独立发生的过程。我似乎记得这意味着间隔时间将遵循指数分布

现在让我们看看你的公式。请注意,由于rand返回0和1之间的统一数字,因此1-rand是相同的。那部分无关紧要!即兰特等于1兰特

好,接下来,看看你找到的表达式。正如我所说的,你写的相当于

next_occurrence_interval = 1/λ  * log(1/rand)
  =  1/λ  * (log(1) - log(rand))
  =  1/λ  * (-log(rand))

现在,你可能开始意识到这是一个指数分布随机数的生成过程。

这是一个泊松过程,描述了事件以给定平均速率独立发生的过程。我似乎记得这意味着间隔时间将遵循指数分布

现在让我们看看你的公式。请注意,由于rand返回0和1之间的统一数字,因此1-rand是相同的。那部分无关紧要!即兰特等于1兰特

好,接下来,看看你找到的表达式。正如我所说的,你写的相当于

next_occurrence_interval = 1/λ  * log(1/rand)
  =  1/λ  * (log(1) - log(rand))
  =  1/λ  * (-log(rand))

现在,你可能开始意识到这是一个指数分布的随机数的产生方式。

这是使用公式
-ln(1-random())/λ,
其中λ是每单位时间内事件的平均数。

这是使用公式
-ln(1-random())/λ,
其中λ是每单位时间内事件的平均数量。

大多数random()实现返回[0,1]中的数字。因此,查找差异
1-random()
可以避免未定义的
ln(0)
@erickson-你误解了整点。问题是这是干什么的?我的论点说明了为什么这会生成指数变量。1-rand只是混淆了问题,实际上与零无关,除非零发生-一个概率极小的事件。不,我没有误解整点。我是我只是指出一个编程问题的实际问题。@erickson:并不是所有随机生成器都返回半开区间上的数字。事实上,在问题所在的MATLAB中,样本位于区间(0,1)。(请参阅帮助。)因此,您的评论确实完全不相关。这在MATLAB中不是一个问题。>>帮助rand:rand均匀分布伪随机数。R=rand(N)返回一个N×N矩阵,其中包含从开放区间(0,1)上的标准均匀分布中提取的伪随机值。Most random()实现从[0,1]返回一个数字。因此,查找差异
1-random()
可以避免未定义的
ln(0)
@erickson-你误解了整点。问题是这是干什么的?我的论点说明了为什么这会生成指数变量。1-rand只是混淆了问题,实际上与零无关,除非零发生-一个概率极小的事件。不,我没有误解整点。我是我只是指出一个编程问题的实际问题。@erickson:并不是所有随机生成器都返回半开区间上的数字。事实上,在问题所在的MATLAB中,样本位于区间(0,1)。(请参阅帮助。)因此,您的评论确实是完全无关的。这在MATLAB中不是一个问题。>>帮助rand:rand均匀分布伪随机数。R=rand(N)返回一个N×N矩阵,其中包含从开放区间(0,1)上的标准均匀分布中提取的伪随机值。