Java中的12位唯一随机数生成

新手上路,请多包涵

我正在开发一个我们需要生成一些唯一编号的应用程序,实际上没有预定义的限制,所以使用 java UUD 生成器并且工作正常。现在给我们一个新的要求来生成 12 位唯一随机数。

任何人都可以指出一些好的方法/算法来实现这一点,因为我在 UUID 生成的数字中看不到任何可能性。

提前致谢

原文由 Umesh Awasthi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

通过调用 random.nextInt 生成每个数字。为了唯一性,您可以通过将它们保存在一个集合中并检查该集合是否包含您每次生成的数字来跟踪您到目前为止使用的随机数。

 public static long generateRandom(int length) {
    Random random = new Random();
    char[] digits = new char[length];
    digits[0] = (char) (random.nextInt(9) + '1');
    for (int i = 1; i < length; i++) {
        digits[i] = (char) (random.nextInt(10) + '0');
    }
    return Long.parseLong(new String(digits));
}

原文由 dogbane 发布,翻译遵循 CC BY-SA 3.0 许可协议

(long)Math.random()*1000000000000L

但是有碰撞的机会

为什么不使用序列?从1000亿到999999999999?记录最后生成的号码。


编辑:感谢 bence olah ,我修正了一个令人毛骨悚然的错误

原文由 Nishant 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏