日韩性视频-久久久蜜桃-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 ; //刪除失敗 }

總結

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

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

主站蜘蛛池模板: 黄色a级片在线观看 | 久久久久久久久精 | 日韩电影一区二区三区四区 | 亚洲福利一区二区 | 黄色www网站| 精品一区二区三区成人免费视频 | 综合激情在线 | 色99999| 性活交片大全免费看 | 热久久最新网址 | 欧洲一级黄 | 日韩久久精品 | 打屁股黄文 | 亚洲欧美日韩精品一区 | 91porn破解版 | 中文在线а√天堂 | 激情网五月天 | 欧美性生交大片免费看app麻豆 | 免费看污的网站 | 欧美91视频 | 亚洲美女中文字幕 | 亚洲国产精品成人无码区 | 色乱码一区二区三区 | 国产无码精品在线播放 | 成人免费黄色网 | 二区三区免费 | 初高中福利视频网站 | 欧美激情 国产精品 | 永久免费无码av网站在线观看 | 狠狠躁夜夜躁人人爽视频 | 91成人破解版 | 久久深夜视频 | 国产激情一区二区三区四区 | 亚洲色欧美另类 | 性网站在线观看 | 亚洲三级国产 | 蜜色影院| 日韩成人精品 | 日韩中文字幕在线播放 | 波多野结衣精品在线 | 日韩精品在线播放 | 国产盗摄av | 欧美巨大荫蒂茸毛毛人妖 | 久久123 | av一区免费 | 内射无码专区久久亚洲 | 一区二区国产在线 | 激情四射网站 | 中日韩在线观看 | 亚洲精品成av人片天堂无码 | 中文字幕+乱码+中文乱 | 国产精品一区二区三区不卡 | 在线观看黄 | 精人妻无码一区二区三区 | 日韩欧美成人一区 | 99国内揄拍国内精品人妻免费 | 少妇高潮惨叫久久久久久 | 91小视频在线 | 日本免费在线播放 | 欧美成人做爰大片免费看黄石 | 久久最新精品 | 久久久免费观看 | 日韩欧美在线视频 | 肉肉h| 猫咪av在线| 日韩欧洲亚洲 | 久久久久久99 | 欧美日韩精品网站 | 成人免费观看a | xxxxwwww国产| 国产精品毛片一区 | 美女脱衣服一干二净 | 色综合久久久久久 | av在线男人天堂 | 欧美一级性生活 | 秋霞av影院 | 一区二区三区免费高清视频 | 你懂的网址在线观看 | 国产又粗又大又爽视频 | 久久色图 | 国产亚洲制服 | 国产精品久久久久久久久久久久久 | 国产女在线 | 国产91沙发系列 | 久久99一区二区 | 香蕉污视频在线观看 | 国产美女久久久 | 日本无遮挡边做边爱边摸 | 外国毛片| 二区影院| 伊人久久久久久久久久 | 真实偷拍激情啪啪对白 | 特级毛片a | a级黄色片网站 | 老熟女重囗味hdxx69 | 久久er99热精品一区二区介绍 | 欧美成人综合视频 | 日本在线视频一区 | 黄色片的网站 |