中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Java產(chǎn)生100個1-150間不重復(fù)數(shù)字

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
    import java.util.Arrays;  
      
    /** 
     * 用Java產(chǎn)生100個1-150的數(shù)字 
     */  
    public class RandomTest {  
      
        public static void main(String[] args) {  
            int[] resultArr = produceNum(1, 150, 100);  
            for (Integer num : resultArr) {  
                System.out.println(num);  
            }  
              
            System.out.println("+++++++++++++++++===================+++++++++++++");  
              
            // 對結(jié)果數(shù)組排序后再輸出  
            Arrays.sort(resultArr);  
            for (Integer num : resultArr) {  
                System.out.println(num);  
            }  
        }  
      
        /** 
         * 產(chǎn)生隨機數(shù)字 
         * @param minNum 最小數(shù)字 
         * @param maxNum 最大數(shù)字 
         * @param numCount 產(chǎn)生的數(shù)字個數(shù) 
         * @return 結(jié)果數(shù)組 
         */  
        public static int[] produceNum(int minNum, int maxNum, int numCount) {  
              
            // 入?yún)⑿r? 
            // 如果隨機數(shù)的個數(shù)大于產(chǎn)生隨機數(shù)的范圍;或最大數(shù)小于最小數(shù)  
            // 直接返回null,說明入?yún)⒉环弦? 
            if (numCount > (maxNum - minNum + 1) || maxNum < minNum) {  
                return null;  
            }  
              
            // 存放結(jié)果的數(shù)組  
            int[] resultArr = new int[numCount];  
              
            // count 記錄已產(chǎn)生的隨機數(shù)的個數(shù)  
            int count = 0;  
              
            while(count < numCount) {  
                  
                // 產(chǎn)生隨機數(shù)  
                int num = (int) (Math.random() * (maxNum - minNum)) + minNum;  
                  
                // flag 定義本次產(chǎn)生的隨機數(shù)是否已在數(shù)組中  
                boolean flag = true;  
                  
                // 遍歷數(shù)組中已產(chǎn)生的隨機數(shù)  
                for (int i=0; i<count; i++) {  
                      
                    // 同本次產(chǎn)生的隨機數(shù)最比較  
                    if (num == resultArr[i]) {  
                          
                        // 如果已存在相同的值,則跳出for循環(huán),繼續(xù)外層的while循環(huán),產(chǎn)生下一個隨機數(shù)  
                        flag = false;  
                        break;  
                    }  
                }  
                  
                // 如果本次產(chǎn)生的隨機數(shù)在數(shù)組中不存在,則將該隨機數(shù)存放在數(shù)組中  
                if (flag) {  
                    resultArr[count] = num;  
                      
                    // 數(shù)組中已產(chǎn)生的隨機數(shù)個數(shù)加1  
                    count++;  
                }  
            }  
              
            return resultArr;  
        }  
    }  

代碼解讀

1  int num = (int) (Math.random() * (maxNum - minNum)) + minNum;

Math.random() 產(chǎn)生的是0~1 之間的double類型的隨機數(shù)

Math.random() * 10 便會得到 0 ~ 10 之間的隨機數(shù),轉(zhuǎn)int后便是0 ~ 9;如果給 Math.random() * 10 + 1,便是1 ~ 11 之間的隨機數(shù),轉(zhuǎn)int便是1 ~ 10。

這里的1 相當(dāng)于程序中的最小值,11則為最大值。

這樣便得到了產(chǎn)生隨機數(shù)的 (int) (Math.random() * (maxNum - minNum)) + minNum


for (int i=0; i<count; i++) {

由于每次產(chǎn)生的num都是隨機的,所以無法保證重復(fù)的問題,所以只有通過去同已經(jīng)產(chǎn)生的存在數(shù)組中的數(shù)字去比較,相同,則重新產(chǎn)生,不同,則添加進(jìn)數(shù)組。

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:iOS判讀app是否第一次起動

下一篇:Android圖片壓縮