java中Random随机函数不重复代码
时间: 2024-09-19 11:17:34 浏览: 57
在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);
}
```
请注意,虽然上述方法可以在一定程度上避免重复,但如果你需要非常大的随机数序列且对性能有高要求,应考虑其他更高效的算法或数据结构。
阅读全文