我需要生成一个唯一的字母数字id,我可以使用UUID,但生成的字符串比我需要的长,我想生成一个长度为8(或多或少)的字符串。 因此我想到了使用Apache lang的RandomStringUtils.randomAlphanumeric(int count)。 我知道没有100%保证字符串是唯一的,所以我想知道是否有人知道在使用例如重复时有重复的可能性。算是8还是9? 感谢。
答案 0 :(得分:4)
快速查看javadoc它似乎只从ascii字母和数字中选择字符,所以36个字符。因此,获得8个字符的给定字符串的概率是36 ^ 8~3E12。对于9个字符,概率为36 ^ 9~1E14。
答案 1 :(得分:0)
它与java.util.Random一样随机,默认情况下为impl。它将大写视为不同。返回示例:BdODmKWjGtaKeFyYsNCbOPRzquNIIRMiEFPjqTSgbfMvMeZgNKihEdUdUXUniHUh
所以你的数学是:1 / 2.18340106e14。
如果您需要非分布式系统中的唯一ID,您可能应该选择AtomicInteger
或某个库用于此目的。