利用random函数随机产生不重复的数字

本文介绍了一个简单的随机数生成算法,该算法确保了在一个指定范围内生成的随机数不会重复出现。通过对随机数进行标记的方式,避免了同一范围内重复生成相同的随机数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


import java.util.Random;
/**
*通过调用random函数,检测随机产生的数字,如果出现过,就标记flag为 true,依次作为鉴别标准
*/
public class random {
      public static void main(String[] args) {
          Random rand = new Random();//新建一个随机类
          boolean[]  bool = new boolean[20];
          int randInt = 0;//新建变量用于临时存储产生的随机数
          for(int i = 0; i < 6 ; i++) {
               do {
                   //randInt  = rand.nextInt(20);//产生一个随机数
            	   randInt = (int) (Math.random()*15);
               }while(bool[randInt]);
              bool[randInt] = true;
              System.out.println(randInt);
         }
    }
在Java中,`java.util.Random` 类提供了一系列生成伪随机数的方法,包括整数、浮点数等。如果你想要生成重复随机数序列,你可以采用以下几种方法: 1. **创建多个实例**:因为每次创建 Random 实例都会得到一个新的随机数生成序列,所以可以创建多个 Random 对象,每个对象负责生成一段独立的随机数。 ```java Random random1 = new Random(); Random random2 = new Random(); int[] sequence1 = generateUniqueSequence(random1.nextInt(100), 10); int[] sequence2 = generateUniqueSequence(random2.nextInt(100), 10); ``` 2. **利用 BitSet 或者 HashSet**:通过维护一个集合,比如 BitSet 或者 HashSet,保证每次产生随机数重复。 ```java Set<Integer> numbers = new HashSet<>(); while (numbers.size() < 10) { int num = random.nextInt(100); // 生成0到99之间的随机数 if (!numbers.contains(num)) { numbers.add(num); } } // 获取重复的序列 List<Integer> sequence = new ArrayList<>(numbers); ``` 3. **自定义序列**:如果你想控制特定范围内的随机数并保持顺序,可以先生成一个包含所有可能值的数组,然后按需取值。 ```java final int MAX = 100; int[] fullSequence = new int[MAX]; for (int i = 0; i < MAX; i++) { fullSequence[i] = i; } int index = 0; int nextNum; while ((nextNum = fullSequence[index++]) < 10) { // 取前10个重复数字 System.out.println(nextNum); } ``` 请注意,虽然上述方法可以在一定程度上避免重复,但如果你需要非常大的随机数序列且对性能有高要求,应考虑其他更高效的算法或数据结构。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值