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

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

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

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

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

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

您可以组合随机类和系统时间(或使用系统时间的函数),例如

  Random random = new Random(System.nanoTime()); int randomInt = random.nextInt(1000000000); 

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

  Random random = new Random(System.nanoTime() % 100000); int randomInt = random.nextInt(1000000000); 

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

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

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

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

您可能正在寻找的是GUID,但这些数字远远超过9位(因为如果从全球范围内查看它,那么只有9位数生成相同数字两次的机会非常大)。

无论如何检查这个维基百科文章: http : //en.wikipedia.org/wiki/Globally_unique_identifier

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