首页 Java Java基础 java中如何生成指定区间内n个不同的随机数

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

Nov 25, 2019 am 11:47 AM
java 随机数

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

实现方法:

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

示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

/**

   * 功能:产生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的特性,元素不能重复

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

/**

     * 功能:随机指定范围内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个不同的随机数的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java 中的平方根 Java 中的平方根 Aug 30, 2024 pm 04:26 PM

Java 中的平方根

Java 中的完美数 Java 中的完美数 Aug 30, 2024 pm 04:28 PM

Java 中的完美数

Java 中的随机数生成器 Java 中的随机数生成器 Aug 30, 2024 pm 04:27 PM

Java 中的随机数生成器

Java 中的阿姆斯特朗数 Java 中的阿姆斯特朗数 Aug 30, 2024 pm 04:26 PM

Java 中的阿姆斯特朗数

Java中的Weka Java中的Weka Aug 30, 2024 pm 04:28 PM

Java中的Weka

Java Spring 面试题 Java Spring 面试题 Aug 30, 2024 pm 04:29 PM

Java Spring 面试题

突破或从Java 8流返回? 突破或从Java 8流返回? Feb 07, 2025 pm 12:09 PM

突破或从Java 8流返回?

Java 中的史密斯数 Java 中的史密斯数 Aug 30, 2024 pm 04:28 PM

Java 中的史密斯数

See all articles