java中如何生成指定区间内n个不同的随机数

互联网 19-11-25

实现方法:

先定义长度为n的数组,然后开始用while循环生成随机数给数组赋值,在赋值之前需要先遍历数组中已经存在的值,如果存在值相等的情况,则重新生成随机数,不进行赋值,循环至定义的数组全部被赋值完。

示例如下:

 /**     * 功能:产生min-max中的n个不重复的随机数     *      * min:产生随机数的其实位置     * mab:产生随机数的最大位置     * n: 所要产生多少个随机数     *     */     public static int[] randomNumber(int min,int max,int n){         //判断是否已经达到索要输出随机数的个数         if(n>(max-min+1) || max <min){             return null;         }         int[] result = new int[n]; //用于存放结果的数组          int count = 0;         while(count <n){             int num = (int)(Math.random()*(max-min))+min;             boolean flag = true;             for(int j=0;j<count;j++){                 if(num == result[j]){                     flag = false;                     break;                 }             }             if(flag){                 result[count] = num;                 count++;             }         }         return result;     }

java学习视频推荐:java开发入门

利用Set的特性,元素不能重复

/**      * 功能:随机指定范围内N个不重复的数      *       * @param min 指定范围最小值      * @param max 指定范围最大值      * @param n 随机数个数      */     public static int[] randomSet(int min, int max, int n) {         Set<Integer> set = new HashSet<Integer>();         int[] array = new int[n];         for (; true;) {             // 调用Math.random()方法             int num = (int) (Math.random() * (max - min)) + min;              // 将不同的数存入HashSet中             set.add(num);             // 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小             if (set.size() >= n) {                 break;             }         }         int i = 0;         for (int a : set) {             array[i] = a;             i++;         }         return array;     }

先将生成的随机数放入到set中,然后判断set的大小,如果没有超出需要的长度,继续循环,如果已经超出,则跳出循环,并将set转成数组。

更多java相关文章推荐:java语言入门

以上就是java中如何生成指定区间内n个不同的随机数的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 随机数
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Java中高级面试题(附答案)

相关资讯