首页 > 编程知识 正文

Java生成不重复的随机数

时间:2023-11-20 16:47:35 阅读:308322 作者:VTAZ

在Java中,生成不重复的随机数是常见的开发需求,可以通过利用Java提供的API如:Math和Random类,结合集合类进行实现。

一、使用Math类生成随机数

Java的Math类中的random方法可以生成[0.0, 1.0)间的随机小数,我们可以通过乘以范围并进行类型转换,生成我们需要范围内的随机整数。

但是由于单个数的随机性,可能存在重复情况,因此我们需要使用集合类如Set来存储生成的随机数。由于Set的特性,它可以帮助我们去掉重复的随机数。

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

public class RandomNumber {
    public static void main(String[] args) {
        Set set = new HashSet<>();

        // generate 10 random numbers
        while (set.size() < 10) {
            int num = (int) (Math.random() * 30); // generate numbers from 0 to 29
            set.add(num);
        }

        System.out.println(set);
    }
}

二、使用Random类生成随机数

Java的Random类提供了更多种类的随机数生成方法,nextXxx方法可以生成各种数据类型的随机数。

使用Random类生成不重复随机数同样可以结合集合类,以保证生成的随机数是不重复的。

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

public class RandomNumber {
    public static void main(String[] args) {
        Set set = new HashSet<>();
        Random random = new Random();

        // generate 10 random numbers
        while (set.size() < 10) {
            int num = random.nextInt(30); // generate numbers from 0 to 29
            set.add(num);
        }

        System.out.println(set);
    }
}

三、产生一定范围内的不重复随机数

如果需要生成的不重复随机数在一个大范围内,比如1-1000000,那么可以先生成这个范围内的所有数,然后再进行随机打乱。

可以先将这些数存入ArrayList中,然后通过Collections.shuffle方法进行打乱。

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

public class RandomNumber {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        
        // add numbers from 1 to 1000000
        for (int i = 1; i <= 1000000; i++) {
            list.add(i);
        }

        // shuffle the list
        Collections.shuffle(list);

        // print the first 10 numbers
        for (int i = 0; i < 10; i++) {
            System.out.println(list.get(i));
        }
    }
}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。