我在 ns2 中遇到了一些问题,关于我想让我的数据包大小遵循指数分配
为此,我使用了一个指数变量
这是我的代码。
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
...
我很困惑,我认为也许暴露变量有一个错误
所以我添加了一些代码。
...
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 中添加指数变量?
多谢
问题可能是您只从随机生成器获取一次值,而不是每次发送数据包时。