问题 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/