[英]Creating ( not truly ) random array of integers in Java
我想编写一个在Java中生成随机整数数组的代码,该数组应包含256个整数,并且整数的值介于0-512之间(可能是0-256或0-1024,但不是0-1百万..)。 但是,每次运行此代码时,我都应该获得相同的随机数组。
这就是我所拥有的:
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次。 所以;
谢谢。
您可以执行以下操作:
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
循环,并使用相同的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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.