是否可以从整数数组生成伪随机整数?我并不是指从数组中选择一个随机整数,而是做类似
的操作[1,2,3] = 4542
[56,89,42] = 80421
最后,是否有可能让输出完全随机,而不是逐渐改变?例如。我希望this不是this。
感谢您的任何意见。
编辑:我已尝试在以下代码中使用哈希码。 (我不仅仅使用随机的原因是我需要能够访问随机输出而无需循环)
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
...
答案 0 :(得分:0)
您可以对输入数组进行哈希处理,并使用单个哈希值为Random
的实例设定种子。这取自Bloch:
int myHash(int[] seedAry) {
int result = 17;
for (int s : seedAry) {
result = 31 * result + s;
}
return result;
}
使用返回的哈希值为Random
。
答案 1 :(得分:0)
select m.*
from Master m
left join Trans t
on t.MasterID = m.ID
and t.EffDate >= date '2015-09-01'
and t.EffDate < date '2015-10-01'
where t.MasterID is null;
除非更改了随机数生成器,否则它将始终提供相同的输出整数集。