首頁  >  文章  >  Java  >  java中使用什麼方法產生不重複隨機數

java中使用什麼方法產生不重複隨機數

王林
王林原創
2019-11-20 10:48:363535瀏覽

java中使用什麼方法產生不重複隨機數

方法一:呼叫java.lang下面Math類別中的random()方法產生隨機數字

新建一個文件後綴名為java的文件,文件名取為MyRandom,該類別中寫如下的程式碼:

public class MyRandom {
    public static void main(String[] args) {
        int radom = (int)(Math.random()*10);
        System.out.println(radom);
    }
}

其中Math.random()為產生0~1之間的一個隨機小數。

產生一個0~9之間的整數為:(int)(Math.random()*10)

產生一個1~10之間的整數則可以寫著:(int)(Math.random()*10 1)

以此類推:產生一個0~n之間的數就該寫: Math.random()*n

取出一個指定長度大小的隨機正整數:

public static int buildRandom(int length) {
    int num = 1;
    double random = Math.random();
    if (random < 0.1) {
        random = random + 0.1;
    } 
    for (int i = 0; i < length; i++) {
        num = num * 10;
    }
    return (int) ((random * num));
}

方法二:呼叫java.util下面Random類別,此類的實例用於產生偽隨機數流,產生一個隨機整數,則呼叫該類別的nextInt()方法,使用Random類別之前,則在套件下導入java.util.Random,程式碼如下:

import java.util.Random;
public class MyRandom {
    public static void main(String[] args) {
    Random rand = new Random();
    int rInt = rand.nextInt(10);
    System.out.println(rInt);
    }
}

其中Random rand = new Random()是建立一個新隨機數產生器;rand.nextInt(int n)是從此隨機數產生器的序列中取出的、在0(包括)和指定值n(不包括)之間均勻分佈的int值。

Java中在指定的整數範圍類,循環產生不相同的隨機數。

以產生6位元20以內不相同的隨即整數為例如下:

public class MyRandom {
    public static void main(String[] args) {
        int n = 20;
        Random rand = new Random();
        boolean[] bool = new boolean[n];
        int randInt = 0;
        for(int i = 0; i < 6 ; i++) {
            do {
            randInt = rand.nextInt(n);
        }while(bool[randInt]);
        bool[randInt] = true;
        System.out.println(randInt);
        }
    }
}

其中,用布林變數數組來儲存是否產生了該數字。生成後,該數字作為布林數組下表的對應布林值變成了true,下一次生成該數字就會再次進入do...while循環生成數字直到產生沒有生成過的數字。

推薦教學:java開發入門

以上是java中使用什麼方法產生不重複隨機數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn