我正在制定一项计划,以刺激机场的运营,飞机着陆和起飞。登陆飞机优先于起飞飞机,但它们是两个独立的队列 平面随机添加并从队列中删除。计算landingQueue和takeOffQueue的平均队列长度以及确定飞机在队列上花费时间的最佳方式是什么。
Random generator = new Random(System.currentTimeMillis());
ArrayQueue<Double> landingQueue = new ArrayQueue<>();
ArrayQueue<Double> takeOffQueue = new ArrayQueue<>();
ArrayQueue<Integer> averageLengthQueue = new ArrayQueue<>();
boolean runwayIsFree = false;
double mins = 0;
for(int i = 0; i < 1000; i += 60) {
double rand1 = generator.nextDouble();
double rand2 = generator.nextDouble();
if(rand1 < .16)
landingQueue.enqueue(rand1);
if(rand2 < .14)
takeOffQueue.enqueue(rand2);
if(mins == 0)
runwayIsFree = true;
if(runwayIsFree) {
if(!landingQueue.isEmpty()) {
landingQueue.dequeue();
mins = 3;
}
else if(!takeOffQueue.isEmpty()) {
takeOffQueue.dequeue();
mins = 2;
}
}
else
mins--;
}
答案 0 :(得分:0)
如你所述,队列在for循环中被随机排队并随机出队。
从这个意义上讲,你是否可以将变量放在for循环中,以便
int averageLandingQueue = 0;
int averageTakeOffQueue = 0;
然后在for循环中
averageLandingQueue += landingQueue.size();
averageTakeOffQueue += takeOffQueue.size();
最后在for循环之后,
averageLandingQueue/=ITERATIONS;
averageTakeOffQueue/=ITERATIONS;
也许平均时间可以用类似的方式完成。