java - 生成 900 万个唯一的随机数字字符串

标签 java random uniqueidentifier unique-id

问题 1:我们能否生成 8 位唯一的 9-10 百万数字字符串?

问题 2:如何在一次程序运行中生成 9 到 1000 万个唯一的“仅限数字”字符串?这些 key 将上传到数据库以供接下来 6 个月使用。我试过了

Math.floor(Math.random() * 10000000) + 10000000; 

在一个循环中,但会产生很多重复项。为了消除重复项,我使用了 HashSet,但我在线程“主”java.lang.OutOfMemoryError 中出现异常:集合中 ~140xxxx 大小后的 Java 堆空间。还有其他生成此输出的方法吗?

最佳答案

创建一组唯一随机数的标准方法是首先按顺序创建数字(例如,在数组中),然后将它们打乱。

您需要谨慎选择洗牌算法;我听到 Fisher-Yates还不错。

关于java - 生成 900 万个唯一的随机数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22192715/

相关文章:

ios - Objective-C 随机数

c# - 18 位唯一 ID - 代码可靠性

uuid - 如何在 Ada 中生成唯一 ID?

java - Hibernate 单向关联问题

java - 如何为位置相关的 Switch 案例定义枚举

algorithm - sortedArrayUsingComparator 是随机化 NSArray 的安全方法吗?

python - 如何在 Python 中生成带有重复的随机列表?

php - 生成唯一 key 的简单算法

java - 可变还原为 StringBuilder 对象

java - 如何重新启动 flink 作业以使用添加的 TaskManager