[英]Creating a random integer from an array of integers
是否可以从整数数组生成伪随机整数? 我的意思不是从数组中选择一个随机整数,而是做类似的事情
[1,2,3] = 4542
[56,89,42] = 80421
最后,是否有可能让输出完全随机,而不是逐渐变化? 例如,我想要这个而不是这个。
感谢您提供任何意见。
编辑:我尝试在以下代码中使用哈希码。 (我不只是使用 random 的原因是我需要能够访问随机输出而不有时循环)
Random random = new Random();
int size = 10;
for (int x = 0; x < size; x++) {
for (int y = 0; y < size; y++) {
for (int z = 0; z < size; z++) {
System.out.println(random.nextInt());
}
}
}
System.out.println();
for (int x = 0; x < size; x++) {
for (int y = 0; y < size; y++) {
for (int z = 0; z < size; z++) {
System.out.println(Arrays.hashCode(new int[]{x, y, z}));
}
}
}
对于代码的第一部分,我得到随机数,例如
-733673840
2005335778
-954776008
-695687646
-1339170035
...
对于第二部分,我得到的数字增加一
29791
29792
29793
29794
29795
...
您可以散列您的输入数组,并使用单个散列值来播种Random
的实例。 这取自布洛赫:
int myHash(int[] seedAry) {
int result = 17;
for (int s : seedAry) {
result = 31 * result + s;
}
return result;
}
使用返回的哈希值来播种Random
的实例。
Random ng = new Random();
for(int i: seedArray){
outint = ng.setSeed(i).nextInt();
}
除非更改随机数生成器,否则它将始终提供相同的输出整数集。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.