1. 程式人生 > >使用Random類生成隨機數

使用Random類生成隨機數

平時我們使用Math類中的random方法生成隨機數時會有重複率高的問題,這是因為random方法其實生成的是偽隨機數。

java中,除了可以通過random 方法來產生隨機數之外,還可以通過一個random類來產生隨機數。通過例項化一個Random物件來建立一個隨機數的生成器。如 Random i=new Random()。通過這條語句就利用了Random類建立了一個隨機數的生成器。不過以這種方法建立隨機數時,與採用Math.random方法產生隨機數的機制不同。利用現在這種方式例項化物件時,Java編譯器會以系統當前的時間作為隨機數生成器的種子。由於時間時時刻刻在變化的。若以這個時間作為生成器的種子,就可以保證生成的隨機數真的是隨機的,其生成的隨機數重複率會大大的降低。 

  利用這種方法其比較方便。如可以利用提供的關鍵字,讓程式返回一個隨機的整數(採用int nextInt(10))等等。不過其返回控制要比Random方法困難一點。如現在需要系統提供一個10到50之間的隨機奇數,利用這個Random類就無法完成。也就是說,利用這個Random類來生成隨機數,其只能夠控制上限,而不能夠控制下限。其可以指定最大的隨機數範圍,而不能夠指定最小的隨機數範圍。所以,在靈活性上,比Random方法要稍微差一點。 

  但對於一些特殊應用,如現在需要生成一個概率密度為高斯分佈的雙精度值隨機數時,則通過採用 Random類的方法來建立隨機數相對來說比較簡單一點。