如何在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,000
和 999,999,999,999,999
之间的东西?
***.com/questions/5392693/…
是的,就是这样。
【参考方案1】:
使用Random的方法public long nextLong()
【讨论】:
好的,谢谢。让我试一试 嗯,好像long不带任何参数,那如何保证生成的数字是15位长呢?【参考方案2】:首先,int
可以包含介于 -2,147,483,648
和 2,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,000
和999,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位长[重复]的主要内容,如果未能解决你的问题,请参考以下文章