java中生成不重複隨機的數字

http://gongyanghui1986.blog.163.com/blog/static/137485319201032610240896/java

Java中產生隨機數數組

1 . 調用java.lang下面Math類中的random()方法產生隨機數dom

        新建一個文件後綴名爲java的文件,文件名取爲MyRandom,該類中編寫以下的代碼:ui

          public class MyRandom {spa

                  public static void main(String[] args) {3d

                          int  radom = (int)(Math.random()*10);blog

                          System.out.println(radom); get

                  }table

          }class

        其中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));
     }

 

2 . 調用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循環生成數字直到產生沒有生成過的數字。

 

例如:生成一個int類型的數組,長度爲50的,並向其中隨即插入0-50之間的數,而且不能重複。

代碼以下:

public class MyRandom {

      public static void main(String[] args) {

        int[] intRandom = new int[50];
        List mylist = new ArrayList();  //生成數據集,用來保存隨即生成數,並用於判斷
        Random rd = new Random();
        while(mylist.size() < 50) {
            int num = rd.nextInt(51);

           /**用集合的contains方法,來判斷該數據集中是否包含隨即數num,

            * 若是含有返回true。不包含就是false。!表示「非」。

            *!mylist.contains(num))是個布爾值,只有當該值爲true時才執行其內部的操做,即爲不包含時才執行。

          */
            if(!mylist.contains(num)) {  
               mylist.add(num);  //往集合裏面添加數據。
            }
        }

       /**給數值賦值*/
       for(int i = 0;i <mylist.size();i++) {
            intRandom[i] = (Integer)(mylist.get(i));
       }

    }

}

相關文章
相關標籤/搜索