如果一个数组是这样填充的:
for (int i = 0; i < rand.length; i++) {
rand[i] = (int) Math.round(Math.random() * 1000000) + 1;
}
然后使用 Arrays.sort 或任何排序算法进行排序,如果有的话
int sum = 0;
for(int i = 0; i < rand.length;i++) {
if (i % 2 == 0) {
sum += rand[i] + rand[rand.length - 1 -i];
}
else
sum -= rand[i] + rand[rand.length - 1 - i];
}
System.out.println("\n");
System.out.println(sum);
那么总和将永远为零。在我测试过一百次左右的情况下,这已证明是正确的。尝试任何范围,任何数组长度。
我无法想象伪随机性真的会有那么大的缺陷。这里发生了什么?