javaRandom如何生成不重复的随机数
时间: 2023-09-02 12:12:09 浏览: 65
Java中可以使用Random类的nextInt()方法来生成随机数,但是它不保证生成的随机数不重复。如果需要生成不重复的随机数,可以考虑以下两种方法:
1.使用Set集合存储生成的随机数,每次生成时判断是否已经存在,如果存在则重新生成。
示例代码:
```java
Set<Integer> set = new HashSet<>();
Random random = new Random();
int num;
while (set.size() < n) {
num = random.nextInt(range);
if (!set.contains(num)) {
set.add(num);
}
}
```
2.使用Fisher-Yates算法对一个数组进行随机排序,然后取前n个数。
示例代码:
```java
int[] arr = new int[range];
for (int i = 0; i < range; i++) {
arr[i] = i;
}
Random random = new Random();
for (int i = range - 1; i > 0; i--) {
int j = random.nextInt(i + 1);
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
int[] result = Arrays.copyOf(arr, n);
```
相关问题
java生成不重复随机数
可以使用Java中的Random类来生成随机数,通过判断每次生成的随机数是否已经存在,来确保生成的随机数不重复。以下是一个示例代码:
```java
import java.util.Random;
import java.util.HashSet;
public class UniqueRandomNumberGenerator {
public static void main(String[] args) {
int min = 1;
int max = 10;
int count = 5;
Random random = new Random();
HashSet<Integer> set = new HashSet<Integer>();
while (set.size() < count) {
int randomNumber = random.nextInt(max - min + 1) + min;
set.add(randomNumber);
}
for (int number : set) {
System.out.print(number + " ");
}
}
}
```
在上面的代码中,我们使用了一个HashSet来存储生成的随机数,因为HashSet不允许重复元素,所以我们可以通过判断HashSet的大小是否达到了指定的个数来判断是否已经生成了足够的不重复随机数。
java random不重复随机数
可以使用Java中的ArrayList和Collections.shuffle方法来实现不重复的随机数生成。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RandomNonRepeat {
public static void main(String[] args) {
int min = 1;
int max = 10;
int count = 5;
List<Integer> numbers = new ArrayList<>();
for (int i = min; i <= max; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
for (int i = 0; i < count; i++) {
System.out.println(numbers.get(i));
}
}
}
```
在上面的代码中,我们首先创建一个包含指定范围内的数字的ArrayList。然后使用Collections.shuffle方法将列表中的元素随机排序。最后,我们从列表中取出前count个元素作为不重复的随机数。