我在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中添加指数变量?
非常感谢
答案 0 :(得分:0)
问题可能是你从随机生成器获得的值只有一次,而不是每次 发送一个数据包。