【问题标题】:Find Average Queue length and Average time a object spends on a queue查找平均队列长度和对象在队列上花费的平均时间
【发布时间】:2014-11-13 16:14:14
【问题描述】:

我正在制定一个计划,以刺激机场的运营,即飞机降落和起飞的地方。降落飞机优先于起飞飞机,但它们是两个独立的队列。
飞机从队列中随机添加和删除。计算landingQueue 和takeOffQueue 的平均队列长度以及确定飞机在队列上花费多长时间的最佳方法是什么。

随机生成器 = 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--;

}

【问题讨论】:

    标签: java queue


    【解决方案1】:

    正如您所说,队列在 for 循环中随机入队和出队。

    从这个意义上说,你能不能把变量放在 for 循环的前面,这样

    int averageLandingQueue = 0;
    int averageTakeOffQueue = 0;
    

    然后在for循环中

    averageLandingQueue += landingQueue.size();
    averageTakeOffQueue += takeOffQueue.size();
    

    最后在for循环之后,

    averageLandingQueue/=ITERATIONS;
    averageTakeOffQueue/=ITERATIONS;
    

    也许平均时间可以以类似的方式完成。

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 2020-08-10
      • 2018-07-12
      • 1970-01-01
      相关资源
      最近更新 更多