A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王艳峰 于 2019-3-10 14:08 编辑

      java中要使生成的随机数不重复可以将已经生成的随机数放入到数组中,每次生成随机数时与数组的内容比较是否相等,相等则重新生成,不相等则存入数组。
关于生成不重复的随机数,有两种方法:
方法一:      (此方法是用于对数组中的元素是否相等进行判断)
public class RandomPrint {
    public static void main(String[] args) {
        int[] arr = {2, 588, 888, 1000, 10000};
        int[] brr = new int[5];
        int index = 0;      //定义变量,表示数组brr的索引
        Random r = new Random();
        while (index < arr.length) {
            int i = r.nextInt(arr.length);
            boolean b = RPrint(brr, arr); //调用方法用以判断这个数是否被获取过
            if (b == false) {   //判断方法返回的值为false,表示当前的数没有被获取过
                brr[index] = arr;    //表示吧数组arr中的元素存入数组brr中
                index++;
                System.out.println(arr + "元的奖金被抽出");
            }
        }
    }

    //定义一个方法,用以判断brr数组中是否存在num这个数
    public static boolean RPrint(int[] brr, int num) {
        for (int i = 0; i < brr.length; i++) {   //对数组进行遍历
            if (brr == num) {
                return true;
            }
        }
        return false;    //如果最终没有找到数组brr中有与num相同的,则返回false
    }
}

方法二:    (此方法是对数组的索引是否重复出现进行判断),不过我用的方法比上述第一种方法要笨一点,只适用于少数数据的随机不重复生成。
public class MethodZuoye {
    public static void main(String[] args) {
        int[] arr = {2, 588, 88, 1000, 10000};
        Print1(arr);
}
public static void Print1(int[] arr) {
        Random s = new Random();
        int[] temp = new int[arr.length];
        for (int j = 0; j < arr.length; j++) {
            temp[j] = s.nextInt(5);//存储arr[]数组的索引
            if (j == 0) {
                System.out.println(arr[temp[j]] + "元的奖金被抽出");
            } else if (j == 1 && temp[j] != temp[j - 1]) {
                System.out.println(arr[temp[j]] + "元的奖金被抽出");
            } else if (j == 2 && temp[j] != temp[j - 1] && temp[j] != temp[j - 2]) {
                System.out.println(arr[temp[j]] + "元的奖金被抽出");
            } else if (j == 3 && temp[j] != temp[j - 1] && temp[j] != temp[j - 2] && temp[j] != temp[j - 3]) {
                System.out.println(arr[temp[j]] + "元的奖金被抽出");
            } else if (j == 4 && temp[j] != temp[j - 1] && temp[j] != temp[j - 2] && temp[j] != temp[j - 3] && temp[j] != temp[j - 4]) {
                System.out.println(arr[temp[j]] + "元的奖金被抽出");
            } else
                j=j-1;
        }
    }
}

以上就是我对java中随机生成一组不重复的数据的看法,发到贴上与大家共享,希望对大家有所帮助。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马