用java写一个从1-33个数字里面随机选出7个不能重复的数字且从小到大排列,和从1-16个数字里面选出4个不能重复的数字且从小到大排列
时间: 2023-09-27 07:05:25 浏览: 119
Java实现生成n个不重复的随机数
### 回答1:
以下是Java代码:
选出7个数字:
```java
import java.util.Arrays;
import java.util.Random;
public class RandomNumbers {
public static void main(String[] args) {
int[] numbers = new int[7];
Random random = new Random();
int count = 0;
while (count < 7) {
int number = random.nextInt(33) + 1;
if (!contains(numbers, number)) {
numbers[count] = number;
count++;
}
}
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));
}
private static boolean contains(int[] numbers, int number) {
for (int n : numbers) {
if (n == number) {
return true;
}
}
return false;
}
}
```
选出4个数字:
```java
import java.util.Arrays;
import java.util.Random;
public class RandomNumbers {
public static void main(String[] args) {
int[] numbers = new int[4];
Random random = new Random();
int count = 0;
while (count < 4) {
int number = random.nextInt(16) + 1;
if (!contains(numbers, number)) {
numbers[count] = number;
count++;
}
}
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));
}
private static boolean contains(int[] numbers, int number) {
for (int n : numbers) {
if (n == number) {
return true;
}
}
return false;
}
}
```
### 回答2:
对于从1-33个数字中随机选出7个不能重复的数字且从小到大排列的问题,可以使用Java的Random类和HashSet集合来解决。首先创建一个HashSet集合用于存储选出的数字。然后使用循环,直到集合中的元素个数等于7为止。循环内部,使用Random类生成一个随机数,并将其添加到HashSet集合中。最后,将集合中的数字转化为数组,并对数组进行排序。以下是代码示例:
```java
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.Arrays;
public class RandomNumberGenerator {
public static void main(String[] args) {
Set<Integer> numbers = new HashSet<>();
Random random = new Random();
while (numbers.size() < 7) {
int num = random.nextInt(33) + 1;
numbers.add(num);
}
Integer[] sortedNumbers = numbers.toArray(new Integer[numbers.size()]);
Arrays.sort(sortedNumbers);
System.out.println(Arrays.toString(sortedNumbers));
}
}
```
对于从1-16个数字中选出4个不能重复的数字且从小到大排列的问题,同样可以使用上述代码,只需将循环中生成随机数的范围修改为1-16即可。例如,将 `int num = random.nextInt(33) + 1;` 修改为 `int num = random.nextInt(16) + 1;`。
### 回答3:
对于从1-33个数字里面随机选出7个不能重复的数字且从小到大排列的问题,可以使用Java中的Random类和ArrayList类来实现。具体步骤如下:
1. 导入Random类和ArrayList类:
```java
import java.util.Random;
import java.util.ArrayList;
```
2. 创建一个Random对象和一个ArrayList对象来存放选出的数字:
```java
Random random = new Random();
ArrayList<Integer> numbers = new ArrayList<Integer>();
```
3. 使用循环生成随机数并添加到ArrayList中,直到ArrayList的大小等于7:
```java
while(numbers.size() < 7) {
int num = random.nextInt(33) + 1;
if(!numbers.contains(num)) {
numbers.add(num);
}
}
```
4. 对ArrayList进行排序:
```java
Collections.sort(numbers);
```
5. 打印出排序后的结果:
```java
for(int i = 0; i < numbers.size(); i++) {
System.out.print(numbers.get(i) + " ");
}
```
对于从1-16个数字里面选出4个不能重复的数字且从小到大排列的问题,可以使用相同的方法,只需要将随机数生成的范围和ArrayList大小进行相应修改即可。
注:以上代码只是伪代码示例,需要在实际的Java项目中进行相应的语法和逻辑调整。
阅读全文