我正在尝试使用队列模拟以下简单场景:
“学生每隔10分钟就会按比例分配到教授办公室接受一次家庭作业的帮助。帮助学生的时间平均分配为7分钟。按比例分配给学生的期望人数是多少?以及得到帮助之前的平均等待时间?预计在教授办公室中将有两个以上的学生占百分之几的时间?”
我首先创建了以下队列,但是我正在努力创建全局时钟以及如何整合离开队列的学生。
import random as rd
class Queue(object):
def __init__(self):
self.officeHasStudent = False
self.totalTime = 0
self.numStudentsInLine = 0
def studentArrives(self, time):
self.totalTime += time
if self.officeHasStudent == False:
self.officeHasStudent = True
else:
self.numStudentsInLine += 1
def __str__(self):
temp = ''
temp += 'Time Elapsed: ' + str(self.totalTime) + ' min\n'
temp += 'number of students in line: ' + str(self.numStudentsInLine)
return temp
Q = Queue()
for i in range(5):
Q.studentArrives(rd.expovariate(1/10.0))
print(Q)
答案 0 :(得分:0)
我猜Queue
还必须知道最后一个学生何时进入办公室,何时排行以及何时下一个学生离开。此外,我不会将“全球时间”视为主要数量,相反,我的算法将类似于以下内容。
您始终必须计算接下来会发生什么:
就像我说的那样,“全球时间”只是一个派生的数量,总是很容易为每个动作计算(更新)。