`
fackyou200
  • 浏览: 301543 次
  • 性别: Icon_minigender_1
  • 来自: 山西太原
社区版块
存档分类
最新评论

java 生成指定范围 随机数 不重复

    博客分类:
  • java
 
阅读更多
package org.xh.rand;

import java.util.Arrays;
import java.util.Random;

public class RandDemo {

	/**
	 *
	 * make by dxh on 2013-1-23 下午02:16:44
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		 int[] arr = RandDemo.genNum(5, 30);  
		 RandDemo.showArr(arr, true); 
	}
	
	
	 /** 
     * 生成不重复随机数 
     *  
     * @param num 
     *            随机数个数 
     * @param value 
     *            随机数范围 
     * @see 注意value不可小于num 
     * @return 
     * @throws TargetMinException 
     */  
    public static int[] genNum(int num, int value) throws TargetMinException {  
        int[] arr = new int[num];// 保存最终生成结果  
        int index = 0;// 状态索引 default = 0  
        arr = new int[num];  
        if (value < num) {  
            throw new TargetMinException("随机数取值范围不可以小于生成随机数个数");  
        }  
        boolean result = true;  
        while (result) {// 控制是否继续生成随机数  
            Random rd = new Random();  
            int tempRandomNum = rd.nextInt(value) + 1;  
            if (arr[arr.length - 1] == 0) {// 决定是否继续生成随机数进行赋值  
                if (isHas(tempRandomNum, arr, index)) {// 判断已生成随机数是否与数组中已有数值重复  
                    continue;  
                }  
                arr[index++] = tempRandomNum;// 将生成的不重复发的随机数放入数组中  
            } else  
                result = false;  
        }  
        return arr;  
    }  
  
    /** 
     * 判断是否已存在生成的随机数 
     *  
     * @param mm 
     * @param arr 
     * @param index 
     * @return 
     */  
    private static boolean isHas(int tempRandomNum, int[] arr, int index) {  
        for (int i = 0; i < index; i++) {  
            if (tempRandomNum == arr[i]) {  
                return true;  
            }  
        }  
        return false;  
    }  
  
    /** 
     * showArr 
     *  
     * @param arr 
     * @param isSort 
     */  
    @Deprecated  
    public static void showArr(int[] arr, boolean isSort) {  
        for (int j = 0; j < arr.length; j++) {  
            if (isSort) {  
                Arrays.sort(arr);  
            }  
            System.out.print(arr[j] + ",");  
        }  
    }  
  
    static class TargetMinException extends Exception {  
        private static final long serialVersionUID = 1L;  
        public String message = "";  
  
        public TargetMinException(String message) {  
            this.message = message;  
        }  
  
        @Override  
        public String getMessage() {  
            return this.message;  
        }  
    }  

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics