如何用Java编程实现从键盘输入一个整数N,然后生成并打印一组不重复的随机数,这些随机数的范围是从1到N(包括1和N)?
时间: 2024-09-14 19:17:19 浏览: 67
在Java中,你可以使用`java.util.Random`类来生成随机数,并结合数组或集合(如ArrayList)来存储已生成的随机数,确保其唯一性和在指定范围内。以下是一个简单的步骤描述:
1. 导入需要的包:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
```
2. 创建一个方法接受用户输入的N作为参数:
```java
public static void generateRandomUniqueNumbers(int n) {
//...
}
```
3. 使用ArrayList存储随机数,因为它允许动态添加元素:
```java
List<Integer> randomNumbers = new ArrayList<>();
```
4. 初始化一个Random对象,并设置种子以保证每次运行程序时得到相同的随机序列(可选,如果你不需要每次都一样):
```java
Random rand = new Random();
rand.setSeed(0); // 这里可以去掉,如果你想获得不同的随机数序列
```
5. 循环生成并检查是否重复,直到列表长度达到n:
```java
while (randomNumbers.size() < n) {
int randomNumber = rand.nextInt(n + 1); // 生成[1, N]的随机数
if (!randomNumbers.contains(randomNumber)) { // 检查是否重复
randomNumbers.add(randomNumber);
}
}
```
6. 打印生成的随机数:
```java
System.out.println("不重复的随机数: " + randomNumbers);
```
完整的代码示例:
```java
public static void main(String[] args) {
int N = getIntegerFromUser(); // 获取用户输入
generateRandomUniqueNumbers(N);
}
public static int getIntegerFromUser() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数N: ");
return scanner.nextInt();
}
// 主函数生成随机数
public static void generateRandomUniqueNumbers(int n) {
List<Integer> randomNumbers = new ArrayList<>();
Random rand = new Random(rand.nextInt()); // 可以去掉这行,不影响结果
while (randomNumbers.size() < n) {
int randomNumber = rand.nextInt(n + 1);
if (!randomNumbers.contains(randomNumber)) {
randomNumbers.add(randomNumber);
}
}
System.out.println("不重复的随机数: " + randomNumbers);
}
```
阅读全文