编写一个生成范围在[1,71)的整数随机数生成器,并要求3,38,34,19,59,28,37,35不被生成且一个数只能被生成一次(Java实现)
时间: 2024-11-06 13:14:28 浏览: 12
在Java中,你可以创建一个`Random`对象并结合HashSet数据结构来实现这个需求。HashSet会存储已经生成过的数字,保证每个数字仅被生成一次。这里是一个简单的实现示例:
```java
import java.util.*;
public class UniqueRandomGenerator {
private Random random = new Random();
private HashSet<Integer> generatedNumbers = new HashSet<>();
public int generateUniqueRandom() {
while (true) {
int number = random.nextInt(70) + 1; // 生成1到70之间的随机数
if (!generatedNumbers.contains(number)) {
if (!isForbidden(number)) { // 检查是否在禁止列表内
generatedNumbers.add(number);
return number;
}
}
}
}
private boolean isForbidden(int num) {
return num == 3 || num == 38 || num == 34 || num == 19 || num == 59 || num == 28 || num == 37 || num == 35;
}
public static void main(String[] args) {
UniqueRandomGenerator generator = new UniqueRandomGenerator();
for (int i = 0; i < 10; i++) {
System.out.println(generator.generateUniqueRandom());
}
}
}
```
在这个例子中,`generateUniqueRandom()` 方法循环生成随机数直到找到一个不在禁止列表中并且尚未被生成的数字。`isForbidden()` 函数用于检查一个数字是否应该被排除。
阅读全文