2017-08-07 51 views
0

我看到這樣的代碼:爲什麼結果是Hello World?

public class HelloWorld { 

    public static void main(String ... args)   
    { 
     System.out.println(randomString(-229985452)+''+randomString(-147909649)); 
    } 

    public static String randomString(int seed) 
    { 
     Random rand = new Random(seed); 
     StringBuilder sb = new StringBuilder(); 
     while(true) { 
      int n = rand.nextInt(27); 
      if (n == 0) break; 
      sb.append((char) ('`' + n)); 
     } 
     return sb.toString(); 
    } 
} 

和對工作結果是: 世界你好

我想知道爲什麼是

+0

結果是'hello world' – Timi

回答

0

隨機數並不是真正的隨機,而是僞隨機的。您可以搜索它們遵循的僞隨機路徑,尋找小圖案。

在這種情況下,模式是'hello world'。

如果你從一個不同的seed開始,那麼你會得到廢話;但是,由於您從已知步行接下來的幾個字符hello world開始,您將獲得hello world