2015-05-09 83 views
-5

暈大家 我最近開始學習java,我有這個問題隨機obj種子代表什麼?這是什麼意思 ?和什麼是隨機對象種子

隨機r1 = new Random(); 隨機r2 =新隨機(3);

+1

http://en.wikipedia.org/wiki/Random_seed。 http://docs.oracle.com/javase/7/docs/api/java/util/Random.html –

+1

在問這類問題之前,請自己做一點研究。 –

+1

不完全重複,但可能會回答您的問題:http://stackoverflow.com/q/3583515/646543 – Michael0x2a

回答

1

這不僅僅是一個Java的東西。

讓計算機生成一個真正的隨機數很困難。您的計算機需要執行復雜的不可預測的計算。 您的種子價值將作爲這些計算的輸入。

很多系統將使用時間戳作爲種子。因爲每次運行它時都會有所不同。 但是,假設你指定的種子,並在使用相同的種子多次:

Random rnd = new Random(10); 
    System.out.println(rnd.nextInt()); 
    System.out.println(rnd.nextInt()); 
    System.out.println(rnd.nextInt()); 

    // do it again with the same seed 
    rnd = new Random(10); 
    System.out.println(rnd.nextInt()); 
    System.out.println(rnd.nextInt()); 
    System.out.println(rnd.nextInt()); 

此代碼將打印相同的3個值的2倍。

輸出:

-1157793070 
1913984760 
1107254586 
-1157793070 
1913984760 
1107254586 

所以,如果你重複使用的種子值,它會產生相同的數字。

0

通過

Random r1 = new Random(); 

你即使調用的方法r1具有相同的參數相同的序列得到的應用程序調用之間返回不同的數字序列。但是,如果您提供了特定的種子編號,返回結果的序列將是相同的(當然,只有在r2將以相同的方法和參數序列被調用時)。

如果您對某些隨機生成的數據集執行操作,此功能通常對測試非常有幫助 - 它允許在每次測試運行時生成相同的數據集。