【发布时间】:2023-03-30 20:58:01
【问题描述】:
我有一个关于数组的非常简单的问题。我一直在看一些教程,但不明白为什么下面的代码将频率输出作为 1** 的随机组合。它从不给出 5、67、541 等数字,它总是给出 150、175、183 等数字。我希望我说清楚了。非常感谢!
代码:
Random rand = new Random();
int freq[] = new int[7];
for(int roll=1; roll<=1000; roll++){
++freq[1+rand.nextInt(6)];
}
System.out.println("Face\tFrequency");
for(int face=1; face<freq.length; face++){
System.out.println(face + "\t" + freq[face]);
}
样本输出:
Face Frequency
1 176
2 171
3 157
4 159
5 164
6 173
【问题讨论】:
-
这不是一个数组问题,而是一个概率问题。它可能给出很小的数字,但可能性很小。
-
它与 0 到 5 (1-6) 之间的整数的随机分布有关。从统计上讲,如果随机发生器是真正随机的,它们都同样可能发生,这就是为什么你看到的数字看起来可能是“奇数”。例如,看到 6 的“67”表示 6 在 1000 次中仅掷出 67 次,这不太可能。例如,加权骰子可能会产生看起来不呈正态分布的数字,因为滚动给定数字的概率与其他数字不同。