天天看點

神奇,教你用随機數列印hello world

下面是一段随機數程式。

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 sb = new StringBuilder();
    while (true) {
        int k = ran.nextInt(27);
        if (k == 0) {
            break;
        }
        sb.append((char) ('`' + k));
    }
    return sb.toString();
}      

每次都會輸出:hello world,這是為什麼呢??

​​

Random構造函數,參數seed是初始種子,相同的種子每次産生的随機數都一樣,是以無論怎麼随機,構造出來的随機數都一樣。

Random r = new Random(-229985452)

會産生以下5位不為0的随機數:

8
5
12
12
15      

程式裡面用`符号相加,`代表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      

一段很簡單的程式卻如此神奇,分享給别人,看他知道不?

推薦閱讀

繼續閱讀