java生成数字不重复的方法
有多种方法可以生成不重复的数字,下面列举几种常见的方法:
1. 使用Set集合:将生成的数字添加到Set集合中,Set集合会自动去重。继续生成数字直到Set集合中的数字个数达到要求。
```java
Set<Integer> set = new HashSet<>(;
Random rand = new Random(;
while (set.size( < numCount)
int num = Int(maxNum - minNum + 1) + minNum;
set.add(num);
int[] nums = new int[numCount];
int index = 0;
nextint()方法
for (int num : set)
nums[index++] = num;
```
2. 使用洗牌算法(Fisher–Yates算法):生成一个包含所有可能数字的数组,然后对数组进行洗牌,截取前n个数字作为结果。
```java
int[] nums = new int[maxNum - minNum + 1];
for (int i = minNum; i <= maxNum; i++)
nums[i - minNum] = i;
Random rand = new Random(;
for (int i = nums.length - 1; i >= 1; i--)
int j = Int(i + 1);
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
int[] result = pyOf(nums, numCount);
```
3.使用递增的方式生成不重复的数字:初始数字为最小值,每次递增一个步长,直到生成足够的数字。
```java
int[] nums = new int[numCount];
int num = minNum;
for (int i = 0; i < numCount; i++)
nums[i] = num;
num += step;
if (nums[numCount - 1] > maxNum)
//数字超过了范围,需要适当调整
int diff = nums[numCount - 1] - maxNum;
for (int i = 0; i < numCount; i++)
nums[i] -= diff;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。