生成不重复的随机长整型数值
在Java中生成不重复的随机长整型数值是一个常见的需求。可以通过以下几种方法实现:
方法一:使用Set集合去重
可以使用Set集合来存储生成的随机长整型数值,Set集合会自动去重,确保生成的数值不会重复。
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class RandomLongGenerator {
public static void main(String[] args) {
generateUniqueRandomLongs(10);
}
public static void generateUniqueRandomLongs(int count) {
Set<Long> set = new HashSet<>();
Random random = new Random();
while (set.size() < count) {
long randomLong = random.nextLong();
set.add(randomLong);
}
for (long value : set) {
System.out.println(value);
}
}
}
在上述代码中,首先创建了一个Set集合用于存储生成的随机长整型数值。然后使用Random类生成随机数,并将其添加到Set集合中,直到集合大小达到指定的count值。最后,使用for-each循环遍历集合并打印其中的数值。
方法二:使用SecureRandom生成随机数
SecureRandom是Java提供的更安全的随机数生成器。相比于Random类,SecureRandom生成的随机数更加难以被猜测和预测。可以通过以下代码生成不重复的随机长整型数值:
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.HashSet;
import java.util.Set;
public class SecureRandomLongGenerator {
public static void main(String[] args) {
generateUniqueRandomLongs(10);
}
public static void generateUniqueRandomLongs(int count) {
Set<Long> set = new HashSet<>();
try {
SecureRandom secureRandom = SecureRandom.getInstanceStrong();
while (set.size() < count) {
long randomLong = secureRandom.nextLong();
set.add(randomLong);
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
for (long value : set) {
System.out.println(value);
}
}
}
在上述代码中,通过调用SecureRandom.getInstanceStrong()获取一个更安全的随机数生成器实例。然后使用类似于方法一的逻辑生成不重复的随机长整型数值。
方法三:使用UUID类生成随机字符串
如果不需要直接生成长整型数值,而是需要生成唯一的标识符,也可以使用UUID类生成随机字符串。UUID(Universally Unique Identifier)是一种标准的128位唯一标识符,可以通过以下代码生成不重复的随机字符串:
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
public class RandomStringGenerator {
public static void main(String[] args) {
generateUniqueRandomStrings(10);
}
public static void generateUniqueRandomStrings(int count) {
Set<String> set = new HashSet<>();
while (set.size() < count) {
String randomString = UUID.randomUUID().toString();
set.add(randomString);
}
for (String value : set) {
System.out.println(value);
}
}
}
在上述代码中,使用UUID.randomUUID().toString()生成一个随机的UUID字符串,并将其添加到Set集合中。通过不断生成并添加字符串,确保集合中的元素不会重复。
总结
本文介绍了三种在Java中生成不重复的随机长整型数值的方法。第一种方法是使用Set集合去重,通过循环生成随机数,并将其添加到Set集合中,确保生成的数值不会重复。第二种方法是使用SecureRandom生成更安全的随机数,代码逻辑与第一种方法类似。第三种方法是使用UUID类生成随机字符串,通过不断生成并添加字符串,确保生成的字符串不会重复。
无论采用哪种方法,都可以在Java中生成不重复的随机长整型数值,满足各种需求。