3 5離散時間模擬

2021-06-17 21:19:32 字數 966 閱讀 9823

在日常生活中,我們經常會遇到許多為了公共秩序而需要排隊的情景。這樣一類活動中模擬程式通常需要用到佇列和線性表之類的資料結構,因此是佇列的典型應用之一。

例如銀行業務的模擬程式:

假設某銀行有4個視窗對外置待客戶,由於每個視窗每次只能服務乙個客戶,所以當人多的時候所有視窗都有人的時候,新來的客戶需要排隊等候;如果4個視窗中有至少有乙個是沒人的那麼客戶來就可以辦理業務。

現在需要編制乙個程式來模擬這種業務活動的計算,並計算出一天中客戶在銀行辦理業務需要的平均時間(包括等待時間)。為了計算這個時間,我們需要知道客戶到達的時間和離開的時間。模擬程式中需要的資料結構是佇列,需要4個佇列分別表示4個視窗排隊的情況,佇列中客戶的主要資訊是客戶的達到時間和客戶辦理事務所需時間。

任何時刻即將發生的事件只有下列5中可能:

1.新客戶到達;2.一號視窗客戶離開;3.二號視窗客戶離開;4.三號視窗客戶離開;5。四號視窗客戶離開。

表示5中事件的事件的有序鍊錶的元素型別定義如下:

typedef  structevent,elemtype;                   //event表示事件型別;elemtype表示有序鍊錶的資料元素型別

4個佇列的資料元素型別定義如下:

typedef  structqelemtype;                                //佇列的資料元素型別

在上述定義的資料結構下實現該模擬程式大致如下:

evenlist  ev;                           //事件表(5中事件的線性表?)

event       en;                          //事件

linkqueue     q[5];                //4個客戶佇列

qelemtype   customer;      //客戶記錄(也就是佇列的資料元素型別)

int totaltime,customernum;   

離散事件模擬 銀行排隊時間模擬

在資料結構中有個講述如何模擬銀行排隊,最終算出每個人平均的逗留時間。這是需要資料結構的知識。將銀行的每個視窗看成是乙個佇列,那麼對於每次來乙個人,都需要從最短的佇列進行排隊。其實更優秀的做法是從最短的等待時間佇列來排隊 這裡的做法是這樣的,首選在乙個佇列中插入乙個人,整個事件是事件驅動的,每次去檢查...

離散事件模擬

被模擬系統的行為 適用於這種模擬的系統,其行為特徵是 模擬中的事件經常需要排隊,佇列結構適用於記錄事件 很多情況下還涉及到時間或其他排序因素,優先佇列結構可能提供所需要的功能 做這種模擬,其中的基本想法就是按事件發生的時間順序處理 在模擬系統裡用乙個優先佇列儲存已知在將來某些特定時刻 時刻也不太能確...

連續時間 離散時間訊號 模擬和數碼訊號辨析

連續時間和離散時間訊號 乙個訊號,它是在時間t的連續值上給出的,就是乙個連續時間訊號 而乙個訊號僅在t的離散值上給出則是乙個離散時間訊號。模擬和數碼訊號 凡乙個訊號的幅度在某一連續範圍內能夠取到任何值的訊號就是模擬訊號,這意味著乙個模擬訊號的幅度可以取到無限多個值 另一方面,訊號的幅度僅能取有限個值...