ns2数据包大小的指数分布

时间:2014-04-07 14:02:37

标签: c++ tcl ns2 cc

我在ns2中遇到一些问题,我想让我的数据包大小跟随指数ditribution

要实现这一点,我使用指数变量

这是我的代码。

set exp [new Agent/Traffic/Exponential]
...
set rng [new RNG]
set rng seed 101
set size [new RandomVariable/Exponential]
$size set avg_ 123
$size use_rng $rng
$exp set packetSize_ [expr 1.0*[$size value]]
...

但是当我看到trave文件时,包大小是416

- 0.659841 0 1 exp 416 ------- 1 0.0 1.0 7 7
r 0.659874 0 1 exp 416 ------- 1 0.0 1.0 7 7
+ 0.693121 0 1 exp 416 ------- 1 0.0 1.0 8 8
- 0.693121 0 1 exp 416 ------- 1 0.0 1.0 8 8
r 0.693154 0 1 exp 416 ------- 1 0.0 1.0 8 8
+ 0.726401 0 1 exp 416 ------- 1 0.0 1.0 9 9
- 0.726401 0 1 exp 416 ------- 1 0.0 1.0 9 9
r 0.726434 0 1 exp 416 ------- 1 0.0 1.0 9 9
+ 0.759681 0 1 exp 416 ------- 1 0.0 1.0 10 10
...

我很困惑,我认为Exponetial Variables可能存在错误

所以我添加了一些代码。

...
for {set j 0} {$j < 5} {incr j} {
puts [format "%-8.3f " [$size value]]
}
...

,结果是

238.606
102.588
12.960
71.759
41.372

所以变量是工作

但无法在数据包中工作..

有人能给我一个建议吗?

或者我可以修改指数流量生成器(expoo.cc)来实现此问题

在expoo.cc中添加指数变量?

非常感谢

1 个答案:

答案 0 :(得分:0)

问题可能是你从随机生成器获得的值只有一次,而不是每次 发送一个数据包。