forget and forget

能吃能睡是福;能忘是大福......

posts - 39, comments - 26, trackbacks - 0, articles - 10
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

一个生成无重复数字的代码

Posted on 2006-01-12 10:29 橘子 阅读(480) 评论(0)  编辑  收藏 所属分类: 程序开发
 1import java.util.Random;
 2
 3public class Util{
 4 /**随机对象*/
 5 private static Random rd = null;
 6 
 7 /**
 8  * 返回一个无重复的随机数组
 9  * @param src 来源数组,所有的数据都来自该数组
10  * @return 处理好的数组
11  */

12 public static int[] random(int[] src){
13  //如果源数组为空,则返回
14  if(src == null){
15   return null
16  }

17  
18  rd = new Random();
19
20  //创建返回数组
21  int[] tmp = new int[src.length];
22  //可供选择的数据个数
23  int num = src.length;
24  
25  //抽取到的数组的下标
26  int index;
27  //随机抽取,如果某个数字被抽取,则置该数字为0,并放到数组的末尾
28  for(int i = 0;i < src.length;i++){
29   //随机生成下标
30   index = Math.abs(rd.nextInt()) % num;
31   //取该值
32   tmp[i] = src[index];
33   //交换数据
34   src[index] = src[num - 1];
35   //可选择数量减少1
36   num--;
37  }

38  //返回
39  return tmp;
40 }

41 
42 public static void main(String[] args){
43  int[] test = {1,2,3,4,5,6,7,8,9};
44  int a[] = random(test);
45  
46  for(int i = 0;i < a.length;i++){
47   System.out.println(a[i]); 
48  }
 
49 }

50  
51}

只有注册用户登录后才能发表评论。


网站导航: