日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

离散事件模拟

發布時間:2025/6/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 离散事件模拟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h>#define ArriveTime 5 //兩個相鄰客戶到達銀行的時間間隔不超過5分鐘 #define EventTime 30 //每個客戶辦理業務的事件不超過30分鐘 #define ClostTime 100 //關門時間 #define QueueNum 5 //隊列數,即窗口數typedef struct {int ArrivalTime ; //到達時刻int Duration ; //辦理事物所需時間 } QElemType; typedef struct QNode {QElemType data;struct QNode *next; } QNode, *QueuePtr; typedef struct {QueuePtr front; //隊頭指針QueuePtr rear; //隊尾指針 } LinkQueue;void InitQueue(LinkQueue *Q) ; void EnQueue(LinkQueue *Q, QElemType e) ; int QueueLength(LinkQueue Q) ; void DeQueue(LinkQueue *Q, QElemType *e) ; int QueueEmpty(LinkQueue Q) ; void GetHead(LinkQueue Q,QElemType *e) ;//--------------------------------------------------------//typedef struct {int OccurTime ; //事件發生時刻int NType ; //事件類型,0表示到達事件,1至4表示四個窗口的離開事件 } Event , ElemType; //事件類型,有序表LinkList的數據元素類型 typedef struct LNode {ElemType data;struct LNode *next; }LNode,*LinkList; typedef LinkList EventList ; //事件鏈表類型,定義為有序鏈表void InitList(LinkList *L) ; void OrderInsert(LinkList *L,ElemType e , int (*cmp)(ElemType a , ElemType b )) ; //按序插入 int ListEmpty( LinkList L ) ; LNode GetHeadL( LinkList L ) ; int DelFirst( LinkList *L , LNode h , LNode *p ) ; ElemType GetCurElem( LNode p ) ;//--------------------------------------------------------////--------程序中用到的主要變量--------------// EventList ev ; //事件表 Event en ; //事件 LinkQueue q[ QueueNum ] ; //4個客戶隊列 QElemType customer ; //客戶記錄 int TotalTime , CustomerNum ;//累計客戶逗留時間和客戶數int cmp( Event a , Event b ) ; void OpenForDay( ) ; void Random( int *durtime , int *intertime ) ; int Minimun( LinkQueue q[ ] ) ; void CustomerArrived( ) ; void CustomerDepture( ) ; void Bank_Simulation( ) ;//---------------------------------------------------------//#include "head.h"int cmp( Event a , Event b ) { //依事件a發生時刻< 或 = 或 > 事件b的發生時刻分別返回-1或0或1if( a.OccurTime < b.OccurTime )return -1 ;else{if( a.OccurTime == b.OccurTime )return 0 ;elsereturn 1 ;} }void OpenForDay( ) {int i ;TotalTime = 0 ; CustomerNum = 0 ;InitList( &ev ) ; //初始化事件鏈表為空表en.OccurTime = 0 ; en.NType = 0 ; //設定第一個客戶到達事件OrderInsert( &ev , en , cmp ) ; //插入事件表.OrderInsert:按序插入for( i = 1 ; i < QueueNum ; ++ i )InitQueue( &q[ i ] ) ; }void Random( int *durtime , int *intertime ) {srand( (unsigned)time( NULL ) );(*durtime) = rand( )%EventTime + 1 ; // srand( (unsigned)time( NULL ) );(*intertime) = rand( )%ArriveTime + 1 ; }int Minimun( LinkQueue q[ ] ) {int i , len , minque = 0 , min = 100 ;for( i = 1 ; i < QueueNum ; ++ i ){len = QueueLength( q[ i ] ) ;if( len < min ){min = len ;minque = i ;}}return minque ; }void CustomerArrived( ) { //處理客戶到達事件en.NType = 0int durtime , intertime , i ;Event ena ;QElemType qet ;++ CustomerNum ;printf("Customer %d arrived at %d and ", CustomerNum, en.OccurTime);Random( &durtime , &intertime ) ; //生成隨機數ena.OccurTime = en.OccurTime + intertime ; //下一客戶到達時刻ena.NType = 0 ;if( ena.OccurTime < ClostTime )OrderInsert( &ev , ena , cmp ) ;i = Minimun( q ) ; //求長度最短隊列qet.ArrivalTime = en.OccurTime ;qet.Duration = durtime ;EnQueue( &q[ i ] , qet ) ; if( QueueLength( q[ i ] ) == 1 ){ ena.OccurTime = en.OccurTime + durtime ;ena.NType = i ;OrderInsert( &ev , ena , cmp ) ; //設定第i個隊列的一個離開事件并插入事件表} }void CustomerDepture( ) { //處理客戶離開事件,en.NType > 0int i ;QElemType customer ;ElemType ena ;printf("Customer departure at %d\n", en.OccurTime) ;i = en.NType ;DeQueue( &q[ i ], &customer ) ; //刪除第i隊列的排頭客戶TotalTime += en.OccurTime - customer.ArrivalTime ;//累計客戶逗留時間if( !QueueEmpty( q[ i ] )) //設定第i隊列的一個離開事件并非插入事件表{GetHead( q[ i ] , &customer ) ;ena.OccurTime = en.OccurTime + customer.Duration ;ena.NType = i ;OrderInsert( &ev , ena , cmp ) ;} }void Bank_Simulation( ) {LNode p ;int i = 0 ;OpenForDay( ) ;while( !ListEmpty( ev ) ){if( DelFirst( &ev , GetHeadL( ev ) , &p ) ){en = GetCurElem( p ) ;if( 0 == en.NType )CustomerArrived( ) ;elseCustomerDepture( ) ;}if (++i % 10 == 0){printf( "\n----- 按任意鍵,繼續 -----" ) ;getch( ) ;printf( "\n\n" ) ;}}printf( "The Averge Time is %f.\n" , ( float )TotalTime/CustomerNum ) ; }int main( ) {Bank_Simulation( ) ;return 0 ; }//被改造的函數void OrderInsert(LinkList *L,ElemType e , int (*cmp)(ElemType a , ElemType b )) //按序插入 {LinkList s , p , q ;s = (LinkList)malloc(sizeof(LNode));s->data = e;q = (*L) ; p = q->next ;while( p ){if( cmp( p->data , e ) > 0 ){s->next = q->next; q->next = s;return ;}q = p ;p = p->next ;}s->next = (*L)->next ; //當事件鏈表為空時(*L)->next = s ; }int DelFirst( LinkList *L , LNode h , LNode *p ) { //已知h指向線性鏈表的頭結點,刪除鏈表中第一個結點并以p返回*p = *(h.next) ;if( p ){h.next = (*p).next ;**L = h ;return 1 ; //刪除成功}return 0 ; //刪除失敗 }

總結

以上是生活随笔為你收集整理的离散事件模拟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 污视频在线播放 | 亚洲激情五月 | y11111少妇| wwwxxx在线播放| 日本一区二区不卡视频 | 国产黄在线播放 | 91国偷自产一区二区三区女王 | 黄色草逼视频 | 成人国产视频在线观看 | 久草视频在线免费 | 福利社区一区二区 | 久久久一区二区三区 | 久久成人毛片 | 天堂影院av | 可以看的av网址 | 国产欧美一区二区三区国产幕精品 | たちの熟人妻av一区二区 | 国产精品情侣 | 欧美作爱视频 | 精品影片一区二区入口 | 性欧美长视频 | 在线观看黄色的网站 | 国产精品久久av无码一区二区 | 国产成人一级 | 国产91在线精品 | 成人刺激视频 | 日韩免费一二三区 | 国产亚洲精久久久久久无码苍井空 | 99热免费观看 | 性欧美极品另类 | 日本精品黄色 | 一区二区免费在线视频 | 亚洲日日骚 | 狠狠躁夜夜 | 成人www视频| 国产综合婷婷 | 亚洲看片| 黄色av免费观看 | 欧美私人网站 | 欧美日韩高清一区二区三区 | 成人av一区二区三区 | 五月天中文字幕 | 亚洲伦理在线 | 日本极品喷水 | 日韩黄色片免费看 | 久久久久久久9 | 国产精品扒开腿做爽爽爽视频 | 日韩天堂av | 99福利在线 | 国产成人精品一二三区 | 91成人免费观看 | 91成人破解版 | 特级性生活片 | 精品欧美乱码久久久久久1区2区 | 黑人极品videos精品欧美裸 | 国产66页| 三级全黄做爰龚玥菲在线 | 天码人妻一区二区三区在线看 | 久久sp| 色老板精品凹凸在线视频观看 | 性久久久久久久久久 | 欧美日韩免费观看视频 | 久久亚洲网 | 手机电影在线观看 | 妖精视频在线观看免费 | 久久久夜夜夜 | 国产精品久久久久久一区二区三区 | 国产日韩在线观看视频 | 天天做天天躁天天躁 | 乌克兰毛片 | 国产日韩欧美精品一区 | 色综合成人 | 精品视频在线播放 | 91porny在线| 午夜视频福利 | 国产宾馆自拍 | 日韩中文av在线 | 夜夜骚av| 韩国美女一区二区 | 日韩欧美国产成人精品免费 | 啪啪免费| 久久精品波多野结衣 | 久久精品国产亚洲av久一一区 | 亚洲国产福利 | 在线观看福利电影 | 中国黄色小视频 | 极品销魂美女一区二区三区 | 麻豆精品国产精华精华液好用吗 | 国产一区91精品张津瑜 | www.黄色小说.com | 自拍99 | 成人在线视频免费播放 | 欧美久久久久久久久中文字幕 | www.狠狠艹 | 99国产精品人妻噜啊噜 | 中国特级黄色大片 | 丁香啪啪综合成人亚洲 | 娇小激情hdxxxx学生 | 亚洲av永久无码精品一区二区国产 |