- 浏览: 223410 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
Wangwei86609:
非常好的规则引擎框架,支持决策树和多线程运行规则https:/ ...
规则引擎 -
hzxlb910:
真详细,收藏哈
maven setting.xml配置说明 -
东方胜:
[b][/b]
脚本语言 Tcl -
345161974:
hyw520110 写道345161974 写道这个Visua ...
Visual Tcl Binary 完整版(完美中文支持) -
hyw520110:
345161974 写道这个Visual Tcl Binary ...
Visual Tcl Binary 完整版(完美中文支持)
[前言]
亂數產生器在NS2中是非常重要的,舉凡網路節點在NAM中的位置或者是應用程式在何時開始傳送或結束資料傳輸,都會用到亂數產生器。因此,在本節中,筆者將介紹如何在NS2中使用亂數產生器。
[種子(seed)和分佈(distribution)]
亂 數產生器所產生的數值是由種子和分佈所控制的,不同的種子或者是分佈就會產生出不同的亂數。我們可以這樣思考,當一個種子和分佈決定之後,亂數產生器會產 生出一個表格,表格內是由一長串不同數字所組成,當我們需要一個亂數,亂數產生器就會去選取這個表格中第一個數字,當再需要另一個亂數,亂數產生器就會去 選取這個表格中第二個數字,以此類推,所以當使用種子和分佈相同時,得到的亂數會相同,若不同時,得到的亂數會不同。而在NS2中,若是種子的值為0的話,則表示每次執行程式的時候,亂數產生器都會在產生出不同的表格,也就是說每次得到的亂數都不相同。
[Creating Random Variable]
若是我們要在NS2中產生一個亂數產生器,並把種子設定為2,則可以把下面的程式碼放入tcl code中。
set rng [new RNG]
$rng seed 2
當random variable產生之後,接下來要決定分佈,我們可以使用的分佈有Pareto、Constant、Uniform、Exponential、或HyperExponentail 等等分佈。
1. Pareto Distribution : 要提供expectation 和 shaper parameter β。
set r1 [new RandomVariable/Pareto]
$r1 use-rng $rng
$r1 set avg_ 10.0
$r1 set shape_ 1.2
2. Constant:
set r2 [new RandomVariable/Constant]
$r2 use-rng $rng
$r2 set avg_ 5.0
3. Uniform distribution: 要提供最小值和最大值
set r3 [new RandomVariable/Uniform]
$r3 use-rng $rng
$r3 set min_ 0.0
$r3 set max_ 10.0
4. Exponential distribution: 要提供平均值
set r4 [new RandomVariable/Exponential]
$r4 use-rng $rng
$r4 set avg_ 5
5. Hyperexponential distribution:
set r5 [new RandomVariable/HyperExponential]
$r5 use-rng $rng
$r5 set avg_ 1.0
$r5 set cov_ 4.0
[Tcl Code]
set rng [new RNG] $rng seed 2
puts “Testing Pareto Distribution” set r1 [new RandomVariable/Pareto] $r1 use-rng $rng $r1 set avg_ 10.0 $r1 set shape_ 1.2 for {set i 1} {$i <=3} {incr i} { puts [$r1 value] }
puts “Testing Constant Distribution” set r2 [new RandomVariable/Constant] $r2 use-rng $rng $r2 set avg_ 5.0 for {set i 1} {$i <=3} {incr i} { puts [$r2 value] }
puts “Testing Uniform Distribution” set r3 [new RandomVariable/Uniform] $r3 use-rng $rng $r3 set min_ 0.0 $r3 set max_ 10.0 for {set i 1} {$i <=3} {incr i} { puts [$r3 value] }
puts “Testing Exponential Distribution” set r4 [new RandomVariable/Exponential] $r4 use-rng $rng $r4 set avg_ 5 for {set i 1} {$i <=3} {incr i} { puts [$r4 value] }
puts “Testing HyperExponential Distribution” set r5 [new RandomVariable/HyperExponential] $r5 use-rng $rng $r5 set avg_ 1.0 $r5 set cov_ 4.0 for {set i 1} {$i <=3} {incr i} { puts [$r5 value] } |
[執行結果]
Testing Pareto Distribution
7.323108e+02
1.034996e+01
3.241146e+01
Testing Constant Distribution
1.000000e+00
1.000000e+00
1.000000e+00
Testing Uniform Distribution
1.762401e+00
8.823415e+00
5.983056e+00
Testing Exponential Distribution
2.342635e+00
2.286844e+00
3.783593e+00
Testing HyperExponential Distribution
2.182741e-01
9.029152e-01
8.333935e-02
不管執行幾次,結果都會相同,這是因為seed都固定為2。
若是把seed改為0,第一次執行
Testing Pareto Distribution
2.384032e+00
5.089023e+00
4.105111e+01
Testing Constant Distribution
1.000000e+00
1.000000e+00
1.000000e+00
Testing Uniform Distribution
1.244962e+00
7.089372e+00
9.505300e+00
Testing Exponential Distribution
6.821317e-01
1.152453e+00
5.977962e+00
Testing HyperExponential Distribution
2.182741e-01
9.029152e-01
8.333935e-02
若是把seed改為0,第二次執行
Testing Pareto Distribution
2.095560e+00
3.138167e+00
4.567834e+00
Testing Constant Distribution
1.000000e+00
1.000000e+00
1.000000e+00
Testing Uniform Distribution
2.799521e+00
3.294468e-01
4.339498e+00
Testing Exponential Distribution
8.149149e-01
1.027426e+00
4.275210e+00
Testing HyperExponential Distribution
2.182741e-01
9.029152e-01
8.333935e-02
可以看出當seed為0時,Pareto、Uniform、Exponential所得到的結果會不相同。
[參考文件]
1. http://www-sop.inria.fr/mistral/personnel/Eitan.Altman/ns.htm
发表评论
-
Tcl 基础知识精华20句
2011-03-30 09:47 1457最近在巩固Tcl的基础知 ... -
tcl 字符串操作 替换
2011-03-30 09:47 5726CL:字符串命令 有一个关于TCL的哲学探讨:TCL语法中的 ... -
Tcl/Tk--文件操作
2011-03-29 17:41 2862wikibook上的文章很有水平,特翻译出来,晒晒。(译自wi ... -
TCL 取时间、格式化时间
2011-03-25 14:03 3789clock seconds 取一个整型值 用命令可以格式化时 ... -
Visual Tcl Binary 完整版(完美中文支持)
2011-03-22 17:24 1947Visual Tcl Binary 是我为可视化开发工具 Vi ... -
windows tcl/tk安装(塔卡)
2011-03-22 17:15 3536在Windows中,最简单的方 ... -
ASED Tile for Linux/Windows 正式发布。
2011-03-22 16:42 1379ASED Tile 项目主页: http://co ... -
正式发布 Visual Tcl Binary 1.6.1 加强版
2011-03-22 16:41 1243Visual Tcl Binary 1.6.1 版 ... -
Tcl/Tk 开发者的常备编程工具
2011-03-22 16:38 2671工欲善其事,必先利其器”,选择正确的工具,可以让 Tcl/Tk ... -
Tcl/Tk 在 Windows XP 系统中的 pixmap 错误。
2011-03-22 16:36 992Tc/Tk,Ubuntu 7.04,中文缺字 在程序 ... -
Tcl/Tk Web Browser Plugin v3
2011-03-22 16:35 1073相信大家一定非常熟悉 Java Applet,许多网页的特效就 ... -
如何将 *.tcl *.tbc 文件转换为 Linux/Windows 二进制可执行文件。
2011-03-22 16:32 3236=============================== ... -
Visual Tcl Binary for Linux/Windows 完整版发布。
2011-03-22 16:27 1442Visual Tcl Binary 项目主页: http ... -
tcl 小技巧
2011-03-21 14:51 9421,expr 【expr arg ?arg ...?】可以有一 ... -
Tcl语言cmdline包
2011-03-21 14:51 1405Cmdline包主要用来处理命令行输入。 getopt ... -
Tcl语言包搜索机制
2011-03-21 14:51 1067“pkg_mkIndex”是一个Tcl命令,它用来建立包索引, ... -
Tcl语言自动加载机制
2011-03-21 14:49 1160“pkg_mkIndex”是一个Tcl ... -
tcl/tk/expect(转)
2011-03-21 14:49 977Tcl pronounced &quo ... -
Tcl编程简介(六)
2011-03-21 14:42 884lsort -mode list 排列列表。 -mode ... -
Tcl编程简介(五)
2011-03-21 14:42 1043Error命令 error message ...
相关推荐
使用tcl脚本产生随机数
然后,"通过随机数字的产生"可能涉及到TCL的随机数生成函数,如`expr {rand()}`。生成的随机数可以用于选择数组中的某个特定元素,也就是随机选取一个文件夹进行操作。这增加了测试的随机性和覆盖率,确保了不同情况...
在实验过程中,你将学习如何编写和调用NS2内部的随机数生成函数,比如`uniform`、`exponential`、`poisson`等,它们分别对应均匀分布、指数分布和泊松分布的随机数。这些分布常用来模拟网络中的各种随机事件,如...
- `tcl`: 此处未在代码中使用到。 2. **种群初始化**: - 使用随机数生成器初始化种群,每个个体包含两个变量\(x_1\)和\(x_2\)的值。 - 计算每个个体的适应度值`f0(i)`。 3. **选择操作**: - 使用轮盘赌选择...
这些信号可以是常量、随机数或者通过高级验证库(如UVM)生成的序列。 3. **例化module**:在`module_tb.v`中,你需要实例化被测模块,连接初始化的信号到DUT的输入端,并将DUT的输出连接到观察变量,以便在仿真...