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

bha*_*abs 5 java random unique

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

Eri*_*son 15

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

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

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

  • +1用于区分随机和唯一 (5认同)

Har*_*Joy 11

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

  • 我没有关注它,但请注意,getTime()保证返回一个唯一的数字是不正确的.只有在没有人操纵时钟的情况下才会这样. (3认同)
  • -1这不会生成九位数的随机数.它甚至不会生成随机数.它只是以毫秒为单位获取当前时间.这有什么比OP要求的更好?我想知道为什么有人提出这个问题. (2认同)

Bru*_*tin 8

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

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

  int randomInt = random.nextInt(1000000000);
Run Code Online (Sandbox Code Playgroud)

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

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

  int randomInt = random.nextInt(1000000000);
Run Code Online (Sandbox Code Playgroud)