Java生成不重复随机数组的方法

方法一

/**
 * 随机获取指定个随机数,且每个随机数之间不能重复
 */
public class Test {
    static int RANDOM_MIN = 1; // 随机生成最小的数
    static int RANDOM_MAX = 32; // 随机生成最大都数
    static int RANDOM_SUMBER = 10; // 生成随机数的个数
    public static void main(String[] args) {
        // 声明数组准备存放随机数
        int[] a = new int[RANDOM_SUMBER];
        // 循环放入随机数
        for (int i = 0; i < a.length; i++) {
            /**
             * 判断是否为第一位,如果是第一个位则直接放入随机数 如果不是则生成一个随机数去和数组已有的随机数进行比对
             * 
             * - 有重复:生成一个新都随机数后,再执行上述操作
             * 
             * - 无重复:将该值放入数组
             */
            if (i == 0) {
                a[i] = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
            } else {
                int b = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
                for (int j = 0; j < a.length; j++) {
                    if (a[j] == b) {
                        b = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
                        j = 0;
                    }
                }
                a[i] = b;
            }
        }
        // 遍历输出
        for (int i : a) {
            System.out.println(i);
        }
    }

}

方法二

import java.util.Random;
import java.util.Vector;
/**
 * 获取10个1-20之间的随机数,要求不能重复
 * 
 * @author lgt
 *
 */
public class Test {
    public static void main(String[] args) {
        // 创建一个产生随机数的对象
        Random r = new Random();
        // 创建一个存储随机数的集合
        Vector<Integer> v = new Vector<Integer>();
        // 定义一个统计变量
        int count = 0;
        while (count < 10) {
            int number = r.nextInt(20) + 1;
            // 判断number是否在集合中存在
            if (!v.contains(number)) {
                // 不在集合中,就添加
                v.add(number);
                count++;
            }
        }
        // 遍历输出
        for (int i : v) {
            System.out.println(i);
        }
    }
}

参考资料

脚本之家 Java实现生成n个不重复的随机数
菜鸟教程 Java random() 方法

posted @ 2020-11-07 01:45  白豹  阅读(857)  评论(0编辑  收藏  举报