伪随机和真随机

在Stack Overflow上看到了这个讨论,觉得很有意思,想起了编程中的伪随机和真随机算法。

下面的代码虽然调用了random的api,但是最终会输出hello world。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
System.out.println(randomString(-229985452) + " " + randomString(-147909649));
public static String (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();
}

参考资料:

  1. Why does this code using random strings print “hello world”?