如何在java中生成一个随机的15位长[重复]

Posted

技术标签:

【中文标题】如何在java中生成一个随机的15位长[重复]【英文标题】:How can I generate a random 15 digit-long in java [duplicate] 【发布时间】: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 之间的东西? ***.com/questions/5392693/… 是的,就是这样。 【参考方案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,请参阅此 *** 链接了解更多信息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());

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

【讨论】:

谢谢,但我已经尝试过,但我无法让它工作。它会产生很多运行时和编译错误。

以上是关于如何在java中生成一个随机的15位长[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中生成随机字符串[重复]

在Java中生成字母数字随机字符串[重复]

如何在Javascript中生成随机数[重复]

如何从不包括某些给定数字的数组中生成随机数[重复]

在java中生成随机字符串[重复]

如何在 Java 中生成随机排列?