import random#导入随机模块 class ATM(): #定义ATM类对象 def init(self, maxtime=10): #初始化,定义最大操作时间10分钟 self.t_max = maxtime #maxtime传递给self.t_max
def getServCompleteTime(self, start=0): #定义实例 getServCompleteTime
return start + random.randint(1, self.t_max) #返回TM当次操作结束的时间,累加下次 ATM 操作时长,范围在 [1, maxtime] 之间。
class Customers(): #定义Customers类 def init(self, n): #初始化,设置客户库中总数 self.count 为 n,初始时剩余客户数 self.left 相同。 self.count = n #传递 self.left = n
def getNextArrvTime(self, start=0, arrvtime=10): #定义实例 getNextArrvTime()
if self.left != 0: #如果剩余不为0
self.left -= 1 #执行下一个,剩余量就减少1
return start + random.randint(1, arrvtime) #返回从某个时间点 start,累加下位客户到达银行需要的时间
else:
return 0
def isOver(self): #定义实例方法 isOver(),作用是判断客户库存是否清零,
return True if self.left == 0 else False
c = Customers(100) #假设有100个客户 a = ATM() #a 表示 ATM机 wait_list = [] #等待列表 wait_time = 0 #客户总排队等候时间,第一个人初始为0 cur_time = 0 #当前时间,第一个人初始为0 cur_time += c.getNextArrvTime() #来一个人就要花费时间,所以当前时间就要增加,更新当前时间,我们调用getNextArrvtime wait_list.append(cur_time) #第一位客户到达银行后,默认自动加入等待列表
while len(wait_list) != 0 or not c.isOver(): #当排队列表不为空,或者客户库存未清零时执行操作 if wait_list[0]
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?