java中random()函數用法介紹


Random()

創建一個新的隨機數生成器。
 

 代碼如下 復制代碼
Random(long seed)

使用單個 long 種子創建一個新的隨機數生成器。

我們可以在構造Random對象的時候指定種子,如:

 代碼如下 復制代碼

Random r1 = new Random(20);

或者默認當前系統時間對http://www.111cn.net/jsp/Java/45403.htm 應的相對時間有關的數字作為種子數:

 代碼如下 復制代碼

Random r1 = new Random();


種子數只是隨機算法的起源數字,和生成的隨機數字的區間無關。

2、Random類中的常用方法

下面對這些方法做一下基本的介紹:

 代碼如下 復制代碼

a、public boolean nextBoolean()

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

 代碼如下 復制代碼

b、public double nextDouble()

該方法的作用是生成一個隨機的double值,數值介於[0,1.0)之間。

 

 代碼如下 復制代碼
c、public int nextInt()

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

如果需要生成指定區間的int值,則需要進行一定的數學變換,具體可以參看下面的使用示例中的代碼。

 代碼如下 復制代碼
d、public int nextInt(int n

)

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

如果想生成指定區間的int值,也需要進行一定的數學變換,具體可以參看下面的使用示例中的代碼。

 代碼如下 復制代碼

e、public void setSeed(long seed)

該方法的作用是重新設置Random對象中的種子數。設置完種子數以后的Random對象和相同種子數使用new關鍵字創建出

的Random對象相同。

3、Random類使用示例

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

代碼均使用以下Random對象r進行生成:

 代碼如下 復制代碼

Random r = new Random();

a、生成[0,1.0)區間的小數

 代碼如下 復制代碼

double d1 = r.nextDouble();

直接使用nextDouble方法獲得。

b、生成[0,5.0)區間的小數

 代碼如下 復制代碼

double d2 = r.nextDouble() * 5;

因為nextDouble方法生成的數字區間是[0,1.0),將該區間擴大5倍即是要求的區間。


同理,生成[0,d)區間的隨機小數,d為任意正的小數,則只需要將nextDouble方法的返回值乘以d即可。

c、生成[1,2.5)區間的小數

 代碼如下 復制代碼

       double d3 = r.nextDouble() * 1.5 + 1;

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

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

隨機數字,然后將生成的隨機數字區間加上d1即可。

d、生成任意整數

 代碼如下 復制代碼

int n1 = r.nextInt();

直接使用nextInt方法即可。

e、生成[0,10)區間的整數

 代碼如下 復制代碼

int n2 = r.nextInt(10);

n2 = Math.abs(r.nextInt() % 10);

以上兩行代碼均可生成[0,10)區間的整數


均勻分布性

 

 代碼如下 復制代碼

import java.util.Random;
 
public class RandomDemo {
    /**
     * 小伙部落
     *
     * @param args
     */
    public static void main(String[] args) {
        Random r = new Random();
        int n5 = r.nextInt(100);
        String ran = "";
        if (n5 < 55) {       //55個數字的區間,55%的幾率
            ran = "55%";
        } else if (n5 < 95) {//[55,95),40個數字的區間,40%的幾率
            ran = "40%";
        } else {
            ran = "5%";     //剩余幾率,你懂得!
        }
        System.out.println(ran);
    }
}


免責聲明!

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



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