我正在用Java创建10位随机唯一数字,但是数字在某些数字之后会重复,我想创建即使服务器重启也不应重复的唯一数字,我想要类似UUID.randomUUID( )表示10位数字。
我使用下面的代码
(long) Math.floor(Math.random() * 9_000_000_000L) + 1_000_000_000L
此代码未生成唯一的10位数字。
[Apache Commons Lang库具有方法RandomStringUtils.randomNumeric(int count)
,顾名思义,该方法会产生给定长度的String
,其中包含随机数字,然后可以使用long
将其映射到Long.parseLong()
。
使用此功能,您可以生成随机值。然后,您必须存储这些值(取决于部署情况,可能存储在某种数据库中),并验证以前没有使用过任何新值。
请注意,此方法将不检查前导零,因此,如果这对您很重要,则也必须这样做。
还要注意,不重复值的时间越长,值变得越可预测(因此随机性就越小)。如果您将此用于加密/安全意识的目的,则
必须使用加密安全的随机数生成器(请查看JDK中的SecureRandom
)。