如何用C模拟泊松过程实现流量生成

shaohao 2007-09-07 01:58:10
我想要模拟泊松过程生成网络数据流量。
只需要实现每次发射一个数据,每次的发射间隔满足负指数分布。那么整个过程就实现了泊松分布。
不知道我这个理解有没有错误。
我想基本的实现应该是编写一个及计时器函数,然后按照指数分布生成时间间隔值,然后在等待了生成值所定义的时间后发射一个数据。
但是我不知道要怎么实现这个指数分布函数。应为根据定义生成的之时一个概率啊!概率P<=1。那要怎么做才对呢?
那位能给我个完整的代码例子?伪代码也行,只要解释清楚。
多谢了。
...全文
1218 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weibaohu 2012-08-15
  • 打赏
  • 举报
回复
我正在做相关方面的项目,可不可以把你模拟泊松过程的c语言代码发我一份呀! 我的邮箱:weibaolong88@126.com 先谢谢啦!
shaohao 2007-09-09
  • 打赏
  • 举报
回复
呵呵,我在CSDN上找到了一些资料。解决了我对理论到底要如何用计算机来实现的疑惑。
下面是引用内容。
指数分布的概率密度函数:y=lamda*exp(-lamda*x), x>=0
由此可以计算概率分布函数:y=1-exp(-lamda*x), x>=0
y 是 X<x 的概率,其取值在区间(0,1)内

首先,把 y 当作是在(0,1)区间的均匀分布的随机变量。
然后,求 y=1-exp(-lamda*x) 的逆函数,x=-(1/lamda)*ln(1-y)

令 z=1-y,显然 z 也是(0,1)区间的均匀分布的随机变量,于是就有 x=-(1/lamda)*ln(z)。
z可以通过 (double)rand()/RAND_MAX 计算。原因是rand()是随机分布函数。

再根据随机论的一个基本原理(书上有的)——如果时间相继出现的时间具有独立相同的指数分布,均值为1/lamda,那么时间出现的次数服从泊松过程,且均值为lamda×t。
好了,那我想我的流量发生器应该这写:
1.设计一个计时器。
2.这个计时器的触发时间Interval有上面所述的方法生成(用户要给出均值mean——应该就是平均速率,不知道这个理解有没有错,还请指教)。
3.每次触发时用Socket发送一个数据包。
4.最终,所有这些发的数据包就应该符合泊松分布。

这样理解应该没错了吧,那位知道的还请指教。

另外,我又一个问题:现在的方式是时间间隔为随机值,发送个数为1个数据包泊松过程。那么,如果每次触发时发送的数据包个数也是个随机值,那么应该是什么过程(有没有比较好的名称)?要如何实现。

最终满足指数分布的变量x,就可以通过x=-(1/lamda)*ln(z)计算。
shaohao 2007-09-08
  • 打赏
  • 举报
回复
顶一把,不要沉了。
shaohao 2007-09-07
  • 打赏
  • 举报
回复
有高手的吧,出来帮一把啊!
小弟我急着用:(

70,025

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧