以下print语句将打印"hello world".有人能解释一下吗?
System.out.println(randomString(-229985452) + " " + randomString(-147909649));
Run Code Online (Sandbox Code Playgroud)
而且randomString()看起来是这样的:
public static String randomString(int i)
{
Random ran = new Random(i);
StringBuilder sb = new StringBuilder();
while (true)
{
int k = ran.nextInt(27);
if (k == 0)
break;
sb.append((char)('`' + k));
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud) 我在我的一个程序中运行这段代码.
public String[] gen_phase_zero() {
Random generator = new Random();
int r = generator.nextInt(2);
if (r == 1) {
String big = "A";
String small = "a";
return new String[] { big, small };
} else {
String big = "B";
String small = "b";
return new String[] { big, small };
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行这几次我的输出是这样的.
Aa Aa Aa Aa Bb Aa Aa Aa Bb
按顺序它并不是真的.但它几乎从未接近50/50
我不是在考虑五十五,但似乎如果首先选择"Aa",那么它将接下来大约3次,但如果首先选择Bb,那么它也将在接下来的三次被选中.