作者:卧龙先生八斗才 | 来源:互联网 | 2024-11-21 12:08
在Java编程中,生成指定数量的不重复随机数是一个常见的需求。本文将通过具体示例展示如何实现这一功能。我们将使用Java的基本库来完成这项任务,并提供详细的代码解释。
### 需求说明:
根据给定的最小值(min)和最大值(max),生成n个不重复的随机数,其中n小于或等于(max - min + 1)。
### 实现思路:
1. 创建一个包含从min到max所有可能值的列表。
2. 使用随机索引从列表中选取一个值,并将其移除,确保每次选取的值不会重复。
### 代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class UniqueRandomGenerator {
/**
* 生成一个在[min, max]范围内的随机数。
* @param min 最小值
* @param max 最大值
* @return 随机数
*/
public int generateSingleRandom(int min, int max) {
Random random = new Random();
return random.nextInt(max - min + 1) + min;
}
/**
* 生成指定数量的不重复随机数。
* @param min 最小值
* @param max 最大值
* @param count 需要生成的随机数数量
* @return 不重复的随机数数组
*/
public int[] generateUniqueRandoms(int min, int max, int count) {
if (count > (max - min + 1)) {
return null;
}
List candidateNumbers = new ArrayList<>();
for (int i = min; i <= max; i++) {
candidateNumbers.add(i);
}
int[] uniqueRandoms = new int[count];
Random random = new Random();
for (int i = 0; i int index = generateSingleRandom(0, candidateNumbers.size() - 1);
uniqueRandoms[i] = candidateNumbers.get(index);
candidateNumbers.remove(index);
}
return uniqueRandoms;
}
}
### 示例应用:
public class Main {
public static void main(String[] args) {
UniqueRandomGenerator generator = new UniqueRandomGenerator();
int[] randomNumbers = generator.generateUniqueRandoms(1, 20, 10);
for (int num : randomNumbers) {
System.out.println(num);
}
}
}
以上代码展示了如何在Java中生成指定数量的不重复随机数。希望对您有所帮助!