LALA  
          日歷
          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          留言簿(1)

          隨筆分類(31)

          文章分類(4)

          收藏夾(21)

          搜索

          •  

          積分與排名

          • 積分 - 29910
          • 排名 - 1389

          最新隨筆

          最新評論

          閱讀排行榜

           
          比較好的生成隨機序列的算法:
           
           1 import java.util.Random;
           2 
           3 public class Utility {
           4     /**
           5      * 用0~n生成m個數的隨機序列
           6      * 
           7      * @param limit
           8      *            - n-1
           9      * @param need
          10      *            - m
          11      * @return 生成的隨機序列
          12      */
          13     public static int[] random_serial(int limit, int need) {
          14         int[] temp = new int[limit];
          15         int[] result = new int[need];
          16         for (int i = 0; i < limit; i++)
          17             temp[i] = i;
          18         int w;
          19         Random rand = new Random();
          20         for (int i = 0; i < need; i++) {
          21             w = rand.nextInt(limit - i) + i;
          22             int t = temp[i];
          23             temp[i] = temp[w];
          24             temp[w] = t;
          25             result[i] = temp[i];
          26         }
          27         return result;
          28     }
          29 
          30     /**
          31      * 對0~n進行隨機亂序排列,比如用于歌曲隨機播放。
          32      *  1、按順序用0到n填滿整個數組;
          33      *  2、隨機產生從0到n-2個數組下標,把這個下標的元素值跟n-1下標的元素值交換,
          34      *     一直進行到下標為1的元素。
          35      * 因此它只需要遍歷一次就能產生全部的隨機數。
          36      * 
          37      * @param limit
          38      *            - n-1
          39      * @return 生成的隨機序列
          40      */
          41     public static int[] random_serial(int limit) {
          42         int[] result = new int[limit];
          43         for (int i = 0; i < limit; i++)
          44             result[i] = i;
          45         int w;
          46         Random rand = new Random();
          47         for (int i = limit - 1; i > 0; i--) {
          48             w = rand.nextInt(i);
          49             int t = result[i];
          50             result[i] = result[w];
          51             result[w] = t;
          52         }
          53         return result;
          54     }
          55 }
          56 
          posted on 2008-12-23 17:32 Dest 閱讀(1832) 評論(1)  編輯  收藏 所屬分類: Java算法
           
          Copyright © Dest Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 海原县| 元谋县| 德令哈市| 杨浦区| 姜堰市| 和硕县| 普兰县| 田东县| 蛟河市| 当阳市| 贺兰县| 尚志市| 绍兴市| 新蔡县| 定西市| 墨脱县| 凤冈县| 荔浦县| 临澧县| 合山市| 佛山市| 长沙市| 肥东县| 乌拉特后旗| 桦川县| 浮山县| 都江堰市| 广安市| 晋中市| 时尚| 宜城市| 古田县| 司法| 中山市| 苗栗县| 兴国县| 黑水县| 高碑店市| 胶南市| 政和县| 东源县|