posts - 2, comments - 0, trackbacks - 0, articles - 1

          生成不重復的隨機數字

          Posted on 2011-10-29 23:27 應該干點什么 閱讀(206) 評論(0)  編輯  收藏
          問題描述:生成一個長度為5的數組,該數組中包含[1,10]之間的數字,且每個數組中的元素都不重復。
          實現思路:首先初始化一個長度為10的數組A,該數組中的數字依次為1~10,然后實現一個循環次數為5的循環,第一次生成一個[0,9]之間的隨機數作為數組標,將該數字賦值到結果數組B中的第一個元素,并將A數組中隨機下標的元素和數組A中的第一個元素交換;有效數字減少1,;第二次生成一個[0,8]之間的隨機數字作為下標。將該數組值賦值到數組B中的第二個元素,依次類推。

          注:Math.random()生成一個[0,1)之間的隨機小數

          實現的代碼如下:
          public class norand {

              
          public static void main(String[] args) {
                  
          int [] a=new int[10];     //原始數據數組
                  int []b=new int[5];       //結果數據數組
                  int index;    //隨機下標
                  int left=10;    // 剩余元素個數
                  int temp;     //   臨時數據
                  
          //初始化原始數組
                  for(int i=0;i<a.length;i++){
                      a[i]
          =i+1;
                  }

                  
          //隨機元素
                  for(int i=0;i<b.length;i++){
                      index
          =(int) (Math.random()*left); // 隨機下標
                      b[i]=a[index];    //存儲結果數據
                      
          //交換數據
                      temp=a[index];  
                      a[index]
          =a[left-1];
                      a[left
          -1]=temp;
                      
          //有效數據減少1
                      left--;
                  }

                  
          //輸出結果  
                  for(int i=0;i<b.length;i++){
                      System.out.println(b[i]);
                  }

                      

              }


          }




          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 五常市| 亳州市| 龙江县| 广宗县| 聂荣县| 阿克苏市| 陆河县| 阿尔山市| 疏勒县| 青铜峡市| 巴青县| 竹北市| 丹江口市| 德清县| 赣州市| 莱芜市| 永丰县| 永定县| 灌云县| 东港市| 宝山区| 普兰店市| 四子王旗| 嘉义县| 武隆县| 辽阳县| 阜康市| 麻城市| 和林格尔县| 申扎县| 南皮县| 渭南市| 齐河县| 班玛县| 辽宁省| 罗甸县| 平遥县| 延寿县| 德清县| 明溪县| 新干县|