4

可能重复:
给定长度的 Java 随机数

我一直在尝试在 java 中生成一个 15 位长的数字,但似乎我没有做到这一点,因为使用:

这将产生最多 10 位数字。

  Random random = new Random();
  int rand15Digt = random.nextInt(15);

如何成功生成它?

4

5 回答 5

5

使用Random的方法 public long nextLong()

于 2012-12-14T09:58:18.637 回答
4

首先, anint可以容纳 和 之间-2,147,483,648的数字2,147,483,647

利用Random.nextLong()

于 2012-12-14T09:59:00.177 回答
3

当以字符串形式显示时,任何数字都可以格式化为 15 位十进制数字。这是在将数字转换为字符串时实现的,例如:

System.out.println(String.format("%015d", 1));

// prints: 000000000000001

如果要生成介于 之间的随机数,100,000,000,000,000999,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) 
于 2012-12-14T10:05:18.847 回答
1

尝试一下BigInteger,请参阅此 StackOverflow 链接以获取更多信息Random BigInteger Generation

于 2012-12-14T10:22:48.447 回答
0

在 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());
}

我认为这是生成唯一和随机数的最佳方法......

于 2012-12-14T10:22:30.267 回答