【问题标题】:How can I generate a random 15 digit-long in java [duplicate]如何在java中生成一个随机的15位长[重复]
【发布时间】:2012-12-02 07:34:10
【问题描述】:

可能重复:
Java random number with given length

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

这将产生最多 10 位数字。

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

如何才能成功生成?

【问题讨论】:

  • 哦,我忘了补充一点,我使用了一个 10 的幂作为随机生成器的种子。只是为了确保我有所需的位数。
  • 随机种子不会影响输出的位数
  • 您当前的代码生成一个介于 0 和 15 之间的 int。您是否希望生成一个以十进制表示时包含 15 个字符的数字? IE。 100,000,000,000,000999,999,999,999,999 之间的东西?
  • 是的,就是这样。

标签: java random


【解决方案1】:

使用Random的方法public long nextLong()

【讨论】:

  • 好的,谢谢。让我试一试
  • 嗯,好像long不带任何参数,那如何保证生成的数字是15位长呢?
【解决方案2】:

首先,int 可以包含介于 -2,147,483,6482,147,483,647 之间的数字。

使用Random.nextLong()

【讨论】:

  • @DuncanJones, 000000000000012 是15 digit result。 OP 没有要求(“10+e15 和 10+e16-1 之间的数字”)。
  • 公平点!我将删除我的反对票。
  • 我仍然不明白如何确保我的结果是 15 位数字。 .nextLong() 产生的值目前大于 15 位。
  • @user1825142 你需要具体说明你想要什么。正如 SJuan76 所说,任何数字都可以被认为是 x-digits 长,如果你这样格式化的话。如果您正在寻找特定的数字范围,请在问题中明确说明。
  • @DuncanJones - 可以认为它是从 100000000000000 到 999999999999999
【解决方案3】:

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

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

// prints: 000000000000001

如果你想生成一个介于100,000,000,000,000999,999,999,999,999 之间的随机数,那么你可以perform a trick 如:

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) 

【讨论】:

  • -1:OP 要求的是一个数字,而不是一个字符串。
  • 好的,让我下载并尝试一下。我会尽快回复你。
  • @SJuan76 Touché :-) 我假设他最终会使用字符串,但我很可能错了。
  • @Duncan Jones;如何将此 RandomStringUtils 库添加到我的代码中?或者我可以从哪里得到它。显然它已经在某处,但我无法下载或导入它,或直接使用它。
  • @Duncan Jones - 非常感谢。那确实成功了:)!!
【解决方案4】:

如何尝试BigInteger,请参阅此 StackOverflow 链接了解更多信息Random BigInteger Generation

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

    • 谢谢,但我已经尝试过,但我无法让它工作。它会产生很多运行时和编译错误。
    猜你喜欢
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2012-09-21
    • 2011-12-10
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多