A link to my PasteBin:
http://pastebin.com/nzW3hZdT
我正在模拟一家超过三家的快餐店 小时。三小时分为18个区间,由10个区组成 每个分钟。
根据每分钟'r'客户的到达率,'R'是 成立。 R是概率的所有18的到达率 间隔(或多或少r / 60)。
此模拟的目的是自己定义'r'并查看 所有18个区间内每个客户的平均等待时间(avgWait)。 通常,'r'越大,'avgWait'越大。
此时在我的代码中(粘贴在上面),平均等待时间正在为一位客户正确打印。
让我们说第一和第二位客户分别在收银台1和2上接受订单大约需要85秒。在这85秒内,很有可能会有更多客户到达,但自cash1empty=FALSE
和{{ {1}}他们显然无法获得他们的订单。
如何设置此队列,以便程序知道在前两个订单获得服务后还有其他几个等待服务?
代码摘录:
cash2empty=FALSE
我为此带来的不便表示歉意,但我不能使用“结构”。数组是可以接受的!
答案 0 :(得分:3)
保留队列中queuedCustomers
的客户数量。每个新客户到达时添加一个(同时增加totalCustomer
)。当您为客户提供服务时减去一个,即当您发送cash1empty=FALSE;
或cash2empty=FALSE;
时
更改
if (customerArrive>=x)
{
// A customer arrived during this second!
totalCustomer++;
到
if (customerArrive>=x)
{
// A customer arrived during this second!
totalCustomer++;
queuedCustomers++;
}
if (queuedCustomers > 0)
{
补遗:选择收银员......
而不是if ((cash1empty==TRUE)&&(cash2empty==TRUE))
做类似的事情:
cointoss = rand()%2
if ((cash1empty==TRUE) && ((cash2empty!=TRUE) || (cointoss == 1)))
{
// use cashier 1
}
else if (cash2empty==TRUE)
{
// use cashier 2
}
else
{
// wait
}
答案 1 :(得分:3)