以下打印语句将打印“hello world”。谁能解释一下?
System.out.println(randomString(-229985452) + " " + randomString(-147909649));
randomString()看起来像这样:
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(); }
当java.util.Random使用特定种子参数(在本例中为-229985452或-147909649)构造 的实例时,它遵循从该种子值开始的随机数生成算法。
java.util.Random
-229985452
-147909649
每个Random使用相同种子构造的每个都将每次生成相同的数字模式。
Random
给定一个实例Random:
Random r = new Random(-229985452)
生成的前 6 个数字r.nextInt(27)是:
r.nextInt(27)
8 5 12 12 15 0
r.nextInt(27)生成给定的前 6 个数字Random r = new Random(-147909649)是:
Random r = new Random(-147909649)
23 15 18 12 4 0
然后只需将这些数字添加到字符的整数表示形式```(即 96)中:
8 + 96 = 104 --> h 5 + 96 = 101 --> e 12 + 96 = 108 --> l 12 + 96 = 108 --> l 15 + 96 = 111 --> o 23 + 96 = 119 --> w 15 + 96 = 111 --> o 18 + 96 = 114 --> r 12 + 96 = 108 --> l 4 + 96 = 100 --> d