Java中实现随机生成10个不重复数字的方法有哪些?
- 后端开发
- 2025-10-12
- 7
在Java中,随机生成10个数可以通过多种方式实现,以下是一些常用的方法,包括使用java.util.Random类、java.util.concurrent.ThreadLocalRandom类以及使用Math.random()方法。
使用java.util.Random类
java.util.Random类是Java标准库中的一个类,用于生成伪随机数,以下是一个使用java.util.Random类生成10个随机整数的示例:
import java.util.Random; public class RandomNumbers { public static void main(String[] args) { Random random = new Random(); int[] numbers = new int[10]; for (int i = 0; i < numbers.length; i++) { numbers[i] = random.nextInt(); // 默认生成一个int类型的随机数 } // 打印生成的随机数 for (int number : numbers) { System.out.println(number); } } }
使用java.util.concurrent.ThreadLocalRandom类
java.util.concurrent.ThreadLocalRandom类是Java 7引入的一个用于生成随机数的类,它提供了与Random类似的方法,但是通常比Random更快,因为它为每个线程提供了一个独立的随机数生成器。

以下是一个使用ThreadLocalRandom类生成10个随机整数的示例:
import java.util.concurrent.ThreadLocalRandom; public class RandomNumbers { public static void main(String[] args) { int[] numbers = new int[10]; for (int i = 0; i < numbers.length; i++) { numbers[i] = ThreadLocalRandom.current().nextInt(); // 默认生成一个int类型的随机数 } // 打印生成的随机数 for (int number : numbers) { System.out.println(number); } } }
使用Math.random()方法
Math.random()方法是Java标准库中的一个静态方法,用于生成一个介于0.0(包含)和1.0(不包含)之间的随机浮点数,可以通过乘以一个整数来生成一个随机整数。

以下是一个使用Math.random()方法生成10个随机整数的示例:
public class RandomNumbers { public static void main(String[] args) { int[] numbers = new int[10]; for (int i = 0; i < numbers.length; i++) { numbers[i] = (int) (Math.random() * 100); // 生成一个介于0到99之间的随机整数 } // 打印生成的随机数 for (int number : numbers) { System.out.println(number); } } }
表格对比
以下是一个表格,对比了三种方法的性能:
| 方法 | 性能 | 简单性 | 优点 | 缺点 |
|---|---|---|---|---|
| java.util.Random | 较慢 | 简单 | 易于使用,适用于大多数场景 | 性能不如ThreadLocalRandom |
| java.util.concurrent.ThreadLocalRandom | 快 | 简单 | 性能更高,适用于多线程环境 | 在单线程环境下性能可能不如Random |
| Math.random() | 较慢 | 简单 | 直接使用,无需引入额外依赖 | 性能不如Random和ThreadLocalRandom |
FAQs
Q1:如何生成一个指定范围内的随机整数?

A1:可以使用以下代码生成一个介于min(包含)和max(不包含)之间的随机整数:
int min = 1; int max = 100; int number = min + (int) (Math.random() * (max min));
Q2:如何生成一个指定范围内的随机浮点数?
A2:可以使用以下代码生成一个介于min(包含)和max(不包含)之间的随机浮点数:
double min = 1.0; double max = 100.0; double number = min + (Math.random() * (max min));