每次运行应用程序时,如何生成唯一的随机数?

时间:2011-04-06 10:20:26

标签: java random unique

在我的应用程序中,我想生成9位数的随机数,这样它们就是唯一的。 每次运行应用程序时,只应生成一个9位随机数,它应该是唯一的。后来我想将这个号码及其相关数据保存在.txt文件中,这样我就可以在需要时检索与这个唯一号码相关的数据。 我该如何实现这个目标?

5 个答案:

答案 0 :(得分:15)

你想让它们真正随机或真正独一无二吗?你只能拥有其中一个。

如果您希望它们真正随机,那么只需从0-9中随机选择9位数字并将它们构建到您的数字中。重复的可能性很小,尤其是在大量迭代时。不过,这将是真正随机的。

如果您希望它们真正独一无二,那么您必须将每个数据存储在数据库中以确保没有重复项。如果生成重复项,则需要重新生成或仅增加数字,然后重试。如果这是你正在寻找的,那么尝试从1开始递增值可能是好的。

答案 1 :(得分:11)

对于唯一号码尝试:(new Date()).getTime()除非您在一秒内生成多个号码,否则它将永远不会相同。

答案 2 :(得分:8)

你可以结合随机类和系统时间(或使用系统时间的功能),例如

  Random random = new Random(System.nanoTime());

  int randomInt = random.nextInt(1000000000);

您还可以在系统时间使用某些功能,例如

  Random random = new Random(System.nanoTime() % 100000);

  int randomInt = random.nextInt(1000000000);

答案 3 :(得分:2)

如果您只想要一个随机的9位数字,请尝试:

long number = (long) Math.floor(Math.random() * 900000000L) + 10000000L;

但是,如果您只想要一个唯一的号码,我会选择使用数据库。

答案 4 :(得分:1)

您所要求的是一个唯一的标识符,永远不会重复,根据定义,这不是随机数。

您可能正在寻找的是GUID,但是它们比9位数长得多(因为如果从全球范围看它,那么只有9位数生成相同数字两次的机会非常大)。

无论如何,请查看此维基百科文章:http://en.wikipedia.org/wiki/Globally_unique_identifier

编辑:澄清一下,GUID有一些随机性。