JAVA随机生成十个不重复的整数(Arraylist,Set)

随机生成十个不重复的整数有许多方法,这里我只写出两种。

第一种(Set):

先上代码:

import java.util.HashSet;
import java.util.Set;

public class Demo01 {
    public static void main(String[] args) {
        Set set = new HashSet();
        while (set.size()<10){
            int num  = (int)(Math.random()*20)-1;
            set.add(num);

        }
        System.out.println(set);
    }
}

在看解析:Set集合中不允许有重复的元素,当添加相同的元素时,因为Set集合的元素时唯一的,所以会覆盖之前的相同元素,set.size()方法能定义获取集合长度,也就能判断你所需要生成整数的个数。

第二种(ArrayList):

先看代码:

package Demo01;

import java.util.ArrayList;
import java.util.List;

public class Demo03 {
    public static void main(String[] args) {
        List list = new ArrayList();
        while (list.size()<10) {
          int  num = (int)(Math.random()*21)-1;
            if(!list.contains(num)){  //如果list集合里没有这个整数,则添加
                list.add(num);
            }
        }
        System.out.println(list);
    }
}

 实现List接口的集合类中的元素是有序的,且允许重复

 List集合中的元素都对应一个整数型的序号记载其在集合中的位置,可以根据序号存取集合中的匀元素。

因为List没有方法帮我们去移除重复的元素,所以,我们添加元素进集合的时候就需要判断它是否存在,所以利用contains方法判断集合里有没有这个元素。

随机生成一个数的方法介绍

第一种(Math.random):

Math.random生成的是一串小数,如果我们需要的是整数就要转换成整型。

public static void main(String[] args) {
        double i = Math.random();
        System.out.println(i);
        int i1 = (int)(i*11)-1;   //(i*11)-1表示生成0-10的一个整数
        System.out.println(i1);
    }

 Math是静态函数,所以我们可以直接调用它的方法。

第一种(Random):

1.Random(); 创建一个新的随机数生成器

2.Random(long seed); 使用单个 long 种子创建一个新随机数生成器

如果用相同的种子创建两个Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列

public static void main(String[] args) {
        Random random = new Random(); //Random不是静态类,故此需要创建一个对象来调用它的方法。
        for (int i = 0; i <20 ; i++) {
            int num = random.nextInt(10); //生成0-10却不包含十的整数。
            System.out.print(num);
            System.out.print("\t");
        }

Random需要创建对象来调用它的方法,它生成的是整数还是小数,由nextInt,nextDouble决定

由程序结果可以得知,我们java创造随机数时,随机数存在重复且为的情况,而且都没有边界值,故此我们需要根据程序的需求来改变随机数的生成范围和数量。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题目大意:分别利用ArrayListSet随机生成十个重复的随机整数,随机整数范围为350到450。 答案: 使用ArrayList生成随机整数的代码可以这样写: ```python import java.util.ArrayList; import java.util.Random; public class Main { public static void main(String[] args){ ArrayList<Integer> arrayList = new ArrayList<>(); Random random = new Random(); int min = 350; int max = 450; while (arrayList.size() < 10){ int randomNumber = random.nextInt((max - min) + 1) + min; if (!arrayList.contains(randomNumber)){ arrayList.add(randomNumber); } } System.out.println(arrayList); } } ``` 使用Set生成随机整数的代码可以这样写: ```python import java.util.HashSet; import java.util.Random; import java.util.Set; public class Main { public static void main(String[] args){ Set<Integer> set = new HashSet<>(); Random random = new Random(); int min = 350; int max = 450; while (set.size() < 10){ int randomNumber = random.nextInt((max - min) + 1) + min; set.add(randomNumber); } System.out.println(set); } } ``` 两个代码的基本思路是相同的:首先定义一个存放随机整数的集合,然后通过一个循环不断生成随机整数,将生成的随机整数添加到集合中,直到集合中的随机整数数量达到十个为止。其中的细节区别在于,ArrayList是一个可以重复添加元素的集合,需要在添加元素之前判断该元素是否已经存在集合中,而Set是一个不允许出现重复元素的集合,每次添加元素时都进行了去重操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值