今天在 stackoverflow 上看到一个有趣的问题,问为什么这段代码会输出 “hello world”
代码如下:
package com.example.demo;import java.util.Random;public class Demo {public static void main(String[] args) {System.out.println(randomString(-229985452) + " " + randomString(-147909649));}public static String randomString(int seed) {Random ran = new Random(seed);StringBuilder temp = new StringBuilder();while (true) {int k = ran.nextInt(27);if (k == 0) break;temp.append((char) ('`' + k));}return temp.toString();}}
看了一些解释,这个原因主要是代码中的 Random 实际上是伪随机数,
也就是说:只要是相同的种子和相同的算法就能得到相同的结果。
这里突然想到了之前玩的一款游戏:No Man’s Sky
(一款宇宙探索类游戏,这里的每个星球都是由一个唯一的种子按照相同的算法生成的)
