java中的隨機數Random


java中一般有兩種隨機數,一個是Math中random()方法,一個是Random類。

一、Math.random()  :     隨即生成0<x<1的小數

  實例:如何寫,生成隨機生成出0~100中的其中一個數呢?

      Math.random()返回的只是從0到1之間的小數,如果要50到100,就先放大50倍,即0到50之間,這里還是小數,如果要整數,就強制轉換int,然后再加上50      即為50~100.
     最終代碼:(int)(Math.random()*50) + 50

二、Random類

    Random random = new Random();//默認構造方法

    Random random = new Random(1000);//指定種子數字

在進行隨機時,隨機算法的起源數字稱為種子數(seed),在種子數的基礎上進行一定的變換,從而產生需要的隨機數字。相同種子數的Random對象,相同次數生成的隨機數字是完全相同的。也就是說,兩個種子數相同的Random對象,第一次生成的隨機數字完全相同,第二次生成的隨機數字也完全相同,舉例:

Random random1 = new Random(100);  
System.out.println(random1.nextInt());  
System.out.println(random1.nextFloat());  
System.out.println(random1.nextBoolean());  

Random random2 = new Random(100);  
System.out.println(random2.nextInt());  
System.out.println(random2.nextFloat());  
System.out.println(random2.nextBoolean()); 

// 兩次輸出的結果是一樣的。

事實上,Random是一種偽隨機數,相同的種子產生相同的序列

Random類的常用方法:

(1) public boolean nextBoolean() 

  該方法的作用是生成一個隨機的boolean值,生成true和false的值幾率相等,也就是都是50%的幾率

(2) public double nextDouble()

  該方法的作用是生成一個隨機的double值,數值介於[0,1.0)之間,這里中括號代表包含區間端點,小括號代表不包含區間端點,也就是0到1之間的隨機小數,包含0而不包含1.0

(3) public int nextInt()

  該方法的作用是生成一個隨機的int值,該值介於int的區間,也就是-2的31次方到2的31次方-1之間

(4) public int nextInt(int n)

  該方法的作用是生成一個隨機的int值,該值介於[0,n)的區間,也就是0到n之間的隨機int值,包含0而不包含n

(5) public void setSeed(long seed)

  該方法的作用是重新設置Random對象中的種子數。設置完種子數以后的Random對象和相同種子數使用new關鍵字創建出的Random對象相同。每次的Seed不同,random就不同了。在進行隨機時,隨機算法的起源數字稱為種子數(seed),在種子數的基礎上進行一定的變換,從而產生需要的隨機數字。要了解Seed的作用,得先了解隨機數原理。

Random類的使用實例: 使用Random類,一般是生成指定區間的隨機數字,下面就一一介紹如何生成對應區間的隨機數字

  Random r = new Random();

  1) 生成[0,1.0)區間的小數:    double d1 = r.nextDouble();

  2) 生成[0,5.0)區間的小數:     double d2 = r.nextDouble() * 5;

  3) 生成[1,2.5)區間的小數 [n1,n2]:   double d3 = r.nextDouble() * 1.5 + 1;【也就是 r.nextDouble() * (n2-n1)+n1】

生成[1,2.5)區間的隨機小數,則只需要首先生成[0,1.5)區間的隨機數字,然后將生成的隨機數區間加1即可。

同理,生成任意非從0開始的小數區間[d1,d2)范圍的隨機數字(其中d1不等於0),則只需要首先生成[0,d2-d1)區間的隨機數字,然后將生成的隨機數字區間加上d1即可。

  4) 生成[0,10)區間的整數:  int n2 = r.nextInt(10);  

   也可以使用這個方法 int  n3 = Math.abs(r.nextInt() % 10);  這種方法首先調用nextInt()方法生成一個任意的int數字,該數字和10取余以后生成的數字區間為(-10,10),因為按照數學上的規定余數的絕對值小於除數,然后再對該區間求絕對值,則得到的區間就是[0,10)了。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM