java代码,根据当前时间生成一个长度10位的随机数,不允许重复
时间: 2024-09-29 14:08:46 浏览: 32
java生成16位随机数
在Java中,你可以使用`java.util.Random`类结合日期时间来生成一个基于当前时间的、独一无二的10位随机数。这里有一个示例:
```java
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.Set;
import java.util.HashSet;
public class UniqueRandomGenerator {
private static final String ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static Set<String> usedNumbers = new HashSet<>();
public static void main(String[] args) {
while (true) {
Date currentDate = Calendar.getInstance().getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
String formattedDate = formatter.format(currentDate);
String randomNum = getRandomNumberFromAlphabet(formattedDate, 10);
if (!usedNumbers.contains(randomNum)) {
System.out.println("Generated unique random number: " + randomNum);
usedNumbers.add(randomNum); // Add to the set of used numbers
break; // Exit the loop once a unique number is found
}
}
}
private static String getRandomNumberFromAlphabet(String base, int length) {
Random random = new Random();
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
char randomChar = ALPHABET.charAt(random.nextInt(ALPHABET.length()));
sb.append(randomChar);
}
return sb.toString();
}
}
```
这个程序首先获取当前日期和时间,并格式化为字符串。然后从预定义的字符集生成一个10位随机数。如果这个随机数还没被使用过(不在`usedNumbers`集合中),则打印出来并添加到集合中。如果生成的随机数已经被使用,程序会继续循环直到找到一个独特的数字。
阅读全文