可能重复:
给定长度的 Java 随机数
我一直在尝试在 java 中生成一个 15 位长的数字,但似乎我没有做到这一点,因为使用:
这将产生最多 10 位数字。
Random random = new Random();
int rand15Digt = random.nextInt(15);
如何成功生成它?
可能重复:
给定长度的 Java 随机数
我一直在尝试在 java 中生成一个 15 位长的数字,但似乎我没有做到这一点,因为使用:
这将产生最多 10 位数字。
Random random = new Random();
int rand15Digt = random.nextInt(15);
如何成功生成它?
使用Random的方法 public long nextLong()
首先, anint
可以容纳 和 之间-2,147,483,648
的数字2,147,483,647
。
当以字符串形式显示时,任何数字都可以格式化为 15 位十进制数字。这是在将数字转换为字符串时实现的,例如:
System.out.println(String.format("%015d", 1));
// prints: 000000000000001
如果要生成介于 之间的随机数,100,000,000,000,000
则999,999,999,999,999
可以执行以下技巧:
Random random = new Random();
long n = (long) (100000000000000L + random.nextFloat() * 900000000000000L);
如果您的最终目标是拥有一个包含随机十进制数字的 15 个字符的字符串,并且您对第三方库感到满意,请考虑 Apache commons RandomStringUtils
:
boolean useLetters = false;
boolean useNumbers = true;
int stringLength = 15;
String result = RandomStringUtils.random(stringLength, useLetters, useNumbers)
尝试一下BigInteger
,请参阅此 StackOverflow 链接以获取更多信息Random BigInteger Generation
在 Hibernate 中UUIDGenerator
使用这个类,我们也可以创建安全随机数和唯一数。
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
String uuid = (String)super.generate(session, object);
return uuid.substring(uuid.length()-15, uuid.length());
}
我认为这是生成唯一和随机数的最佳方法......