2

我想编写一个代码,在 Java 中生成一个随机整数数组,该数组应包含 256 个整数,整数值介于 0 - 512 之间(可能是 0 - 256 或 0 - 1024,但不是 0 - 100 万..) . 但是,每次我运行这段代码时,我都应该得到相同的随机数组。

这就是我所拥有的:

int k = 256;

for(int t=0;t<k;t++){
    Random rn = new Random(t);
    int randomNumber = rn.nextInt();
    arrayToBeSorted[t] = randomNumber;
}

但是,这给了我以下值:

-1155484576 -1155869325 -1154715079 -1155099828 -1157023572

我一点也不喜欢。

所以我将我的代码更改为:(我将 k*2 作为参数添加到 nextInt 方法)

for(int t=0;t<k;t++){
    Random rn = new Random(t);
    int randomNumber = rn.nextInt(k*2);
    arrayToBeSorted[t] = randomNumber;
}

现在这就是我得到的:

374 374 374 374 374 374 374 374 373 373 373 373 373 373 373 373 374 374 375 375 374 374 374 374 374 374 374 374 374 374 374 374 372 372 372 372 372 372 372 372 372 372 372 372 372 372 372 372 373 373 373 373 373 373 373 373 373 373 373 373 372 372 373 373 371 371 371 371 371 371 371 371 370 370 371 370 370 370 370 370 372 372 372 372 371 371 371 371 371 371 371 371 371 371 371 371 369 369 369 369 369 369 369 369 369 369 369 369 369 369 369 369 370 370 370 370 370 370 370 370 370 370 370 370 370 369 370 370 380 380 380 380 379 379 380 379 379 379 379 379 379 379 379 379 380 380 380 380 380 380 380 380 380 380 380 380 380 380 380 380 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 379 379 379 379 379 379 379 379 379 378 379 379 378 378 378 378 377 377 377 377 377 376 377 377 376 376 376 376 376 376 376 376 377 377 378 377 377 377 377 377 377 377 377 377 377 377 377 377 375 375 375 375 375 375 375 375 375 375 375 375 375 375 375 375 376 376 376 376 376 376 376 376 376 376 376 376 375 375 375 375

我不喜欢的是,有很多价值观在重复。所以我该怎么做?

*注意:我实际上也需要这 10 次。所以;

  1. 在我的代码中,我将在所有这些之上有另一个计数器,从 0 计数到 9,比如int = c;
  2. 我需要将所有这 10 个数组随机化,范围为 0 到 1024(最大值)。

谢谢你。

4

1 回答 1

6

你可以这样做:

int k = 256;
Random rn = new Random(seed); // use a single Random object, you choose a seed
                              // to get the same sequence, use the same seed

for (int t = 0; t < k; t++) {
    // Random rn = new Random(t); // commented out from your original code
                                  // you only need one Random object
    int randomNumber = rn.nextInt(256); // 256, or whatever you want the max
                                        // value to be
    arrayToBeSorted[t] = randomNumber;
}

注意:我实际上也需要这 10 次

然后只需重复for循环 10 次,并使用相同的Random对象,如下所示:

int k = 256;
Random rn = new Random(seed);

for (int c = 0; c < 10; c++) {
    for (int t = 0; t < k; t++) {
        int randomNumber = rn.nextInt(256);
        someArrayOfTenArrays[c][t] = randomNumber;
    }
}
于 2013-05-11T20:25:02.713 回答