Transcript PPT

亂數函數(Random-Number Function)
Rung-Shiang Cheng
Department of Computer and Communication, Kun Shan University
[email protected]
Outline
 介紹亂數函數的使用方法
 相關範例
產生亂數和模擬生活中的隨機資料
 何時會用到亂數函數呢? 統計實驗…網路模擬…
 ANSI C <stdlib.h>
產生10個亂數,同時印出RAND_MAX的值
(1/2)
 Example
把時間當成亂
數的種子
產生10個亂數,同時印出RAND_MAX的值
(2/2)
 執行結果
 取特定的值當作亂數種子(以"0"為例)
 第1次實驗….
第2次實驗….
第n次實驗
產生10個範圍從1到6的亂數
 Example: 丟骰子….
產生10個範圍從1到6的亂數
 執行結果
產生0 ~ 1之間的浮點數亂數
 Example
產生0 ~ 1之間的浮點數亂數
 執行結果
產生m 到n之間的整數亂數
 Example: 公式: m + (rand() % (n − m + 1) )
產生m 到n之間的整數亂數
 執行結果
用指令列引數指定亂數的最小值m和最大值n
用指令列引數指定亂數的最小值m和最大值n
 執行結果
產生m 到n之間的浮點數亂數
 公式:m + (rand() / RAND_MAX) × (n − m)
產生m 到n之間的浮點數亂數
 Case 1: random (20, 60)
產生m 到n之間的浮點數亂數
 Case 2: random (0, 1)
利用NS-2網路模擬器的亂數產生器模擬封包
遺失
 NS-2是什麼?
– Network Simulator, version 2
•
•
•
•
物件導向網路模擬器
C++, OTCL
Router, Link, End point, TCP/IP protocols
Ethernet, WiFi, Sensor Networks
網路模擬的應用實例
 使用網路模擬器模擬封包遺失
 統計與量測模擬結果
如何在網路模擬器中使用亂數產生器
 設定種子(seed)
 設定分佈 (distribution)
– E.g. Pareto、Constant、Uniform、Exponential、
HyperExponentail
20
Uniform Distribution
• 參數
– 最小值: min_
– 最大值: max_
• 範例
這個例子在NS-2中產生一個亂數產生器,並把種
子的值設定為2(若種子的值為0的話,則亂數產生
器會在每次程式被執行時使用不同的種子 )
• 執行結果
21
模擬在網路上使用FTP傳送資料
 網路拓撲
 執行結果
Error Model (Uniform Distribution)(1/2)
 修改TCL Script加入下列程式碼
在node0和node1之間
( SimpleLink object)加入error
 rate : Specify error rate
 unit : Specify the unit of error (time, pkt, bits)
– Default: packet
 ranvar : Specify the random variable for generating errors
Error Model (Uniform Distribution)(1/2)
 執行結果
和前一個例子相比,goodput下降了…
量測Error rate (1/2)
 AWK程式碼(修改自sent_drop.awk)
計算送出的封包
計算收到的封包
在這裡略做修改…
量測Error rate (1/2)
 模擬&量測結果
模擬時間: 5秒
如何找到這份講義?
 就這麼簡單 (Report)
http://teachers.ksu.edu.tw/rscheng/illus/report.htm