我正在开发一个我们需要生成一些唯一编号的应用程序,实际上没有预定义的限制,所以使用 java UUD 生成器并且工作正常。现在给我们一个新的要求来生成 12 位唯一随机数。
任何人都可以指出一些好的方法/算法来实现这一点,因为我在 UUID 生成的数字中看不到任何可能性。
提前致谢
原文由 Umesh Awasthi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在开发一个我们需要生成一些唯一编号的应用程序,实际上没有预定义的限制,所以使用 java UUD 生成器并且工作正常。现在给我们一个新的要求来生成 12 位唯一随机数。
任何人都可以指出一些好的方法/算法来实现这一点,因为我在 UUID 生成的数字中看不到任何可能性。
提前致谢
原文由 Umesh Awasthi 发布,翻译遵循 CC BY-SA 4.0 许可协议
(long)Math.random()*1000000000000L
但是有碰撞的机会
为什么不使用序列?从1000亿到999999999999?记录最后生成的号码。
编辑:感谢 bence olah ,我修正了一个令人毛骨悚然的错误
原文由 Nishant 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
通过调用
random.nextInt
生成每个数字。为了唯一性,您可以通过将它们保存在一个集合中并检查该集合是否包含您每次生成的数字来跟踪您到目前为止使用的随机数。