1. 程式人生 > 其它 >Math.random()和Random類之間的聯絡

Math.random()和Random類之間的聯絡

技術標籤:學習記錄java

**Math.random()**是令系統隨機產生大於等於0.0,小於1.0的偽隨機double值。假設:產生一個1到4的變數,num = Math.random()*3+1;

Random 類就是含有有引數和無引數兩種的構造,其中不含引數的構造方法是每次將當前的系統時間作為種子,而含引數構造是使用一個固定值(引數)作為種子,種子也就是Random生成隨機數時所使用的引數。每次使用時先建立一個Random物件,也叫隨機數生成器,然後呼叫Random.next**()方法獲取數值。

Random類的注意事項:

  1. 隨機數是種子經過計算生成的。
  2. Random類中不含引數的建構函式每次都是使用的當前時間作為種子,隨機性更強;而含引數的建構函式是偽隨機的,更有可預見性。
  3. 具有相同種子值得Random物件生成的隨機數相同;種子值不同,產生的隨機數不再一致。

Math類的原始碼顯示出Math.random()內部呼叫的方法就是Random類中的nextDouble()方法,此刻也就明確了文章一開始Math.random()返回的是double型別值。

new Random().nextInt(5); 就是要返回的隨機數的邊界,也就是隨機數的範圍是0——5之間的整數

Random類

package dome04;
/*使用:
* 獲取一個隨機的int數字(範圍是int的所有範圍,有正負兩種)
* 獲取一個隨機的int數字(引數代表了範圍,左閉右開區間)
* int nun = r.nextInt(3);
* 實際含義就是0-2*/
import java.util.Random; import java.util.function.DoubleToIntFunction; public class Dome04Random { public static void main(String[] args) { int n =5; Random r = new Random(); //本來的範圍是【0,n),整體+1之後就是【1,n】 int result = r.nextInt(n) + 1; System.out.println(result)
; } }