java 从1~30之间随机抽取9个不重复的数字。
时间: 2024-02-13 10:07:32 浏览: 85
好的,以下是 Java 的实现方式:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RandomNumbers {
public static void main(String[] args) {
List<Integer> nums = new ArrayList<>();
Random random = new Random();
while (nums.size() < 9) {
int num = random.nextInt(30) + 1;
if (!nums.contains(num)) {
nums.add(num);
}
}
System.out.println(nums);
}
}
```
这个程序使用了一个 List 来存储随机生成的数字,然后用 while 循环生成随机数并判断是否已经存在于 List 中,如果不存在则加入 List 中,直到 List 中有9个数字为止。最后输出 List 即可。
希望这个程序能够帮到您!
相关问题
随机抽取三个数字java
在Java中,你可以使用`Random`类来随机生成整数。以下是一个简单的示例,生成并打印三个不重复的随机整数:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class GenerateRandomNumbers {
public static void main(String[] args) {
Random random = new Random(); // 创建Random对象
List<Integer> numbers = new ArrayList<>(); // 创建一个列表来存放随机数
// 生成第一个随机数并确保其不重复
int firstNumber;
do {
firstNumber = random.nextInt(100); // 例如,范围是0到99
} while (numbers.contains(firstNumber)); // 判断是否已存在
numbers.add(firstNumber);
// 再次生成两个随机数,确保不重复
for (int i = 0; i < 2; i++) {
int secondNumber;
do {
secondNumber = random.nextInt(100);
} while (numbers.contains(secondNumber) || secondNumber == firstNumber);
numbers.add(secondNumber);
}
Collections.shuffle(numbers); // 打乱顺序,让结果更具随机性
System.out.println("随机生成的三个数字是: " + numbers);
}
}
```
在这个例子中,我们首先生成一个不重复的随机数,然后继续生成其他两个,直到找到都不重复的数字为止。最后,我们使用`Collections.shuffle()`函数打乱数组顺序。
java代码不重复的随机抽取
### Java 实现不重复的随机数生成
为了实现不重复的随机数生成,可以采用多种方法。以下是几种常见的方式:
#### 方法一:使用 `List` 和 `Random`
通过创建一个包含所有可能数值的列表,并从中随机选取并移除元素来确保唯一性。
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class UniqueRandomNumbers {
public static List<Integer> generateUniqueRandom(int count, int min, int max) {
List<Integer> numbers = new ArrayList<>();
for (int i = min; i <= max; i++) {
numbers.add(i);
}
Collections.shuffle(numbers); // 随机打乱顺序
return numbers.subList(0, Math.min(count, numbers.size())); // 返回指定数量的独特数字[^1]
}
public static void main(String[] args) {
List<Integer> uniqueNumbers = generateUniqueRandom(5, 1, 10);
System.out.println(uniqueNumbers);
}
}
```
这种方法简单直观,在数据量不大时性能良好。当所需随机数的数量不超过总范围大小时有效[^2]。
#### 方法二:双重循环检测法
此方式适用于较小规模的数据集。它会不断尝试生成新的随机数直到找到未被占用的一个为止。
```java
import java.util.Random;
public class NonRepeatingRandomGenerator {
private final Random random = new Random();
/**
* @param size 数组长度
*/
public int[] getNonRepeatIntArray(int size){
int nums[] = new int[size];
for (int i = 0; i < size;) {
int num = this.random.nextInt(size)+1;
boolean isDuplicate = false;
for (int j=0;j<i;j++){
if(num==nums[j]){
isDuplicate=true;break;
}
}
if(!isDuplicate){
nums[i]=num;i++;
}
}
return nums;
}
}
// 测试类中的调用示例
class Test{
public static void main(String[] args){
NonRepeatingRandomGenerator generator=new NonRepeatingRandomGenerator();
int result[]=generator.getNonRepeatIntArray(5);
for(int n:result){
System.out.print(n+" ");
}
}
}
```
这段代码展示了如何在一个固定范围内生成一定数量的不同整数[^3]。
以上两种方案都可以很好地解决不重复随机数的需求,具体选择取决于应用场景和个人偏好。对于大规模数据或更高效率的要求,则建议考虑更复杂的算法和技术优化。
阅读全文