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