java怎么生成十八位随机不重复的数字
时间: 2023-09-05 14:14:24 浏览: 115
可以使用Java中的UUID类生成一个36位的随机字符串,然后将其中的“-”去掉就可以得到一个32位的随机字符串,再将其转换为Long类型,最后进行取模操作,生成一个18位的随机数。以下是示例代码:
```java
import java.util.UUID;
public class RandomNumberGenerator {
public static long generate() {
String randomStr = UUID.randomUUID().toString().replace("-", "");
long randomLong = Long.parseLong(randomStr, 16);
return randomLong % 100000000000000000L;
}
}
```
调用`RandomNumberGenerator.generate()`方法即可生成一个18位的随机数。需要注意的是,由于long类型最大值为9223372036854775807,所以取模的数字需要小于等于这个值。
相关问题
java生成随机不重复数字
在Java中,生成一组随机不重复的数字可以采用数组、ArrayList或者HashSet等集合数据结构配合Random类一起完成。这里是一个简单的示例,假设我们想生成一个指定范围内的不重复随机数:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int size = 5; // 需要生成的随机数的数量
int min = 0; // 最小值
int max = 100; // 最大值
// 创建包含所有可能数值的列表
ArrayList<Integer> numbers = new ArrayList<>();
for (int i = min; i <= max; i++) {
numbers.add(i);
}
// 使用Collections.shuffle打乱列表顺序,然后取前size个元素
Collections.shuffle(numbers);
numbers = numbers.subList(0, size);
// 打印结果
System.out.println("Random unique numbers between " + min + " and " + max + ":");
for (Integer number : numbers) {
System.out.print(number + " ");
}
}
}
```
运行上述代码,你会得到一个指定范围内(在这个例子中是0到100之间)的随机不重复整数列表。
Java 高性能生成6位不重复随机数字
可以使用Java的Random类来生成随机数字,并且使用Set集合来存储已经生成的数字,以保证不重复。以下是一个可能的实现:
```java
import java.util.Random;
import java.util.Set;
import java.util.HashSet;
public class RandomGenerator {
private static final int MAX_NUM = 999999; // 最大的6位数字
private static final int MIN_NUM = 100000; // 最小的6位数字
public static int generate() {
Random random = new Random();
Set<Integer> set = new HashSet<>();
while (set.size() < MAX_NUM - MIN_NUM + 1) {
int num = random.nextInt(MAX_NUM - MIN_NUM + 1) + MIN_NUM;
set.add(num);
}
int index = random.nextInt(MAX_NUM - MIN_NUM + 1);
int result = 0;
for (int num : set) {
if (index-- == 0) {
result = num;
break;
}
}
return result;
}
}
```
在这个实现中,我们首先定义了最大和最小的6位数字,然后使用Random类生成随机数字并将其存储在Set集合中。由于Set集合的特点是不允许重复元素,所以当Set集合中的元素数量达到最大值时,我们就可以保证其中的所有数字都是不重复的。
最后,我们再使用Random类生成一个随机索引,从Set集合中取出对应的数字作为结果返回。由于Set集合是无序的,所以我们需要遍历集合来找到对应索引的数字。
阅读全文