java以随机时间间隔向arraylist添加项目

时间:2011-07-10 04:51:10

标签: java random arraylist

尝试以随机时间间隔添加项目。

我想我需要在我等于到达时开始,一旦满足我需要创建一个新的随机到达并添加i(否则它不会再发生,因为我已经到了。所以我添加了另一个如果,一旦满足,创建新的到达时间并再次添加我。伪代码似乎有意义,代码不是那么多,任何帮助是值得赞赏的。

    ArrayList<Integer> q = new ArrayList<Integer>();
    Random r = new Random();
    int arrivals = 0;

    for (int i = 1; i <= 720; i++) {
        int arrive = r.nextInt(4)+1;
        if (i == arrive) {
            q.add(i);
            arrivals ++;
            arrive = r.nextInt(4)+1+i;
        }
        else if (i == arrive) {
            q.add(i);
            arrivals ++;
            arrive = r.nextInt(4)+1+i;
        }

    }
抱歉,到达时间应该刚到。 ArriveTime不存在。

编辑:从评论中扩展。 'i'代表时间,我不想在列表中添加随机整数。而是以“i”的随机间隔添加相同的对象。我在列表中添加'i'的值,以查看算法添加项目的时间,因为它似乎没有工作。结果各不相同,但似乎总是将单个数字添加到列表中。还对代码进行了更新。

3 个答案:

答案 0 :(得分:1)

您的算法缺少暂停 - 即调用Thread.sleep(),否则会旋转。

我会努力保持简单,将代码与问题相匹配:即在添加到队列之间等待一段时间,只需:

ArrayList<Integer> q = new ArrayList<Integer>();
Random r = new Random();

for (int i = 1; i <= 720; i++) { // loop as many times as you want
    Thread.sleep(r.nextLong() % 1000); // wait a random time up to 1 second
    q.add(r.nextInt()); // add a random number to the queue
}

您可以根据自己的要求调整数字。

答案 1 :(得分:0)

发布的代码没有多大意义。

  • 这取决于未声明的变量。
  • 更新arrive的语句无效...因为它在循环中是本地的。

答案 2 :(得分:0)

您应该在time语句中将if与1-4进行比较,然后将该值添加到i(因为i代表时间)这样的事情

    ArrayList<Integer> q = new ArrayList<Integer>();
    Random r = new Random();
    int arrivals = 0;

    for (int i = 1; i < 100 ; i++) { //loop as many times as you want.
        int time = r.nextInt(4)+1; //choose a random time of arrival, 1-4

        //now compare time to your random time intervals (1-4, not i
        //if it matches add that value to i
        if (time == 1) {  
            //add your object to the list
            i += 1; 
        }
        else if (time == 2) {
            //add your object to the list
            i += 2;
        }

        else if (time == 3) {
            //add your object to the list
            i += 3;
        }
        else if (time == 4) {
            //add your object to the list
            i += 4;
        }
    }