我对 java 的东西很陌生。目前我正在尝试编写一个处理生日问题的程序(维基百科)。我想知道有多少人必须被问到他们的出生日期和月份,直到一个重复。我用下面的代码写了一个做“询问”的类:
public class Starter {
static ArrayList<Integer> peeps = new ArrayList<Integer>();
static boolean match = false;
static int counter = 0;
public static int doRand() {
int rand = (1 + (int) (Math.random() * ((365 - 1) + 1)));
return rand;
}
public static int start() {
do {
int buffer = 0;
buffer = doRand();
if (peeps.isEmpty()) {
peeps.add(doRand());
}
counter++;
for (int i = 0; i < peeps.size(); i++) {
if (peeps.get(i) == buffer) {
match = true;
}
}
peeps.add(buffer);
} while (match == false);
return counter;
}
}
这似乎可行,并产生了 10 到 50 之间的数字。但如果我从以下 for 循环运行此函数,我会得到非常奇怪的结果:
public class BirtdayProblem {
public static void main(String[] args) {
for (int i=0;i< 1000;i++) {
System.out.println(Starter.start());
}
}
}
它产生 1000 个连续数字的输出......为什么?如果我手动运行该功能多次,我从来没有得到任何连续的数字......有人可以向我解释一下吗?
示例输出: 25 26 27 ... ... 1016 1017 1018 1019 1020 1021 1022 1023 1024
对我来说看起来不是很随机......?