Java生成不重復隨機數組的方法


方法一

/**
 * 隨機獲取指定個隨機數,且每個隨機數之間不能重復
 */
public class Test {
    static int RANDOM_MIN = 1; // 隨機生成最小的數
    static int RANDOM_MAX = 32; // 隨機生成最大都數
    static int RANDOM_SUMBER = 10; // 生成隨機數的個數
    public static void main(String[] args) {
        // 聲明數組准備存放隨機數
        int[] a = new int[RANDOM_SUMBER];
        // 循環放入隨機數
        for (int i = 0; i < a.length; i++) {
            /**
             * 判斷是否為第一位,如果是第一個位則直接放入隨機數 如果不是則生成一個隨機數去和數組已有的隨機數進行比對
             * 
             * - 有重復:生成一個新都隨機數后,再執行上述操作
             * 
             * - 無重復:將該值放入數組
             */
            if (i == 0) {
                a[i] = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
            } else {
                int b = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
                for (int j = 0; j < a.length; j++) {
                    if (a[j] == b) {
                        b = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
                        j = 0;
                    }
                }
                a[i] = b;
            }
        }
        // 遍歷輸出
        for (int i : a) {
            System.out.println(i);
        }
    }

}

方法二

import java.util.Random;
import java.util.Vector;
/**
 * 獲取10個1-20之間的隨機數,要求不能重復
 * 
 * @author lgt
 *
 */
public class Test {
    public static void main(String[] args) {
        // 創建一個產生隨機數的對象
        Random r = new Random();
        // 創建一個存儲隨機數的集合
        Vector<Integer> v = new Vector<Integer>();
        // 定義一個統計變量
        int count = 0;
        while (count < 10) {
            int number = r.nextInt(20) + 1;
            // 判斷number是否在集合中存在
            if (!v.contains(number)) {
                // 不在集合中,就添加
                v.add(number);
                count++;
            }
        }
        // 遍歷輸出
        for (int i : v) {
            System.out.println(i);
        }
    }
}

參考資料

腳本之家 Java實現生成n個不重復的隨機數
菜鳥教程 Java random() 方法


免責聲明!

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



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