java中產生不重複隨機數(據HashSet特性)

來源:互聯網
上載者:User

標籤:size   turn   指定   import   hash   int   nbsp   隨機數   不重複   

import java.util.HashSet;public class RandomNumbers {     /**         * 隨機指定範圍內N個不重複的數 利用HashSet的特徵,只能存放不同的值         *          * @param min         *            指定範圍最小值         * @param max         *            指定範圍最大值         * @param n         *            隨機數個數         * @param HashSet<Integer>         *            set 隨機數結果集         */        public static void randomSet(int min, int max, int n, HashSet<Integer> set) {            if (n > (max - min + 1) || max < min) {                return;            }            for (int i = 0; i < n; i++) {                // 調用Math.random()方法                int num = (int) (Math.random() * (max - min)) + min;                set.add(num);// 將不同的數存入HashSet中            }            int setSize = set.size();            // 如果存入的數小於指定產生的個數,則調用遞迴再產生剩餘個數的隨機數,如此迴圈,直到達到指定大小            if (setSize < n) {                /**                 * 下面這一行為什麼被注釋掉了,說實話萬能的度娘到處都是這段代碼                 * 但是如果那樣的話並不一定能確定產生對應的數值                 * 大佬們還是先仔細看一下,n-setSize只是剩下沒有產生的數量,如果下次還沒產生不同的數值那還怎麼玩                 */                randomSet(min, max, n - setSize, set);// 遞迴  //                randomSet(min, max, n, set);// 遞迴            }        }                public static void main(String[] args) {            /**             * 那就這樣吧,根據你的需求去產生最合適的數值             * 樣本預設產生4位的隨機數,從0到999當然不算了,所以就是8999位嘍             * 不過產生數量可別超過你給的範圍,jvm會炸的             */            int max = 5;//隨機數範圍的最大值            int min = 1;//隨機數範圍的最小值            int n = 4;//產生數量            HashSet<Integer> numbers = new HashSet<Integer>();            randomSet(min,max,n,numbers);            System.out.println(numbers);//隨意列印一下看看效果        }    }

 

java中產生不重複隨機數(據HashSet特性)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.