2

我想在java中随机创建16位数字。我可以用 String 来做,然后转换为 Long。还有其他选择吗?

谢谢!

4

3 回答 3

6

您可以使用 Java 类 Random 来生成随机 Longs,就像这里的数字高达一百万:

final long MAX_NUMBER_YOU_WANT_TO_HAVE = 9999999999999999L;
final long MIN_NUMBER_YOU_WANT_TO_HAVE = 1000000000000000L;
Long actual = Long.valueOf(Math.abs(Float.valueOf(new Random().nextFloat() * (MAX_NUMBER_YOU_WANT_TO_HAVE - MIN_NUMBER_YOU_WANT_TO_HAVE)).longValue()));
于 2013-04-17T17:49:46.187 回答
4

如果您绝对需要 16 位数字(不是从 0 到 10^17-1 的数字)

Random rand = new Random;
long accumulator = 1 + rand.nextInt(9); // ensures that the 16th digit isn't 0
for(int i = 0; i < 15; i++) {
    accumulator *= 10L;
    accumulator += rand.nextint(10);
}

我可能在 for 循环上有一个单独的,i < 16如果需要的话使用。

于 2013-04-17T17:54:44.613 回答
2

您想要 16 位数字的原因可能是这里的关键。

如果您只想要一个可能与最大 16 位数字一样大的数字,请使用您喜欢的随机数生成器生成介于0和之间的随机数9 999 999 999 999 999。如果这是原因,您可以根据需要添加前导零以准确显示 16 个字符。

如果您明确希望有 16 个十进制数字并且第一个不能为零,则可以尝试使用999 999 999 999 999as 上限进行相同的练习,并在前面添加一个从 1 到 9 的随机数字(将其乘以千万亿然后与另一个随机数,如果需要的话)。

还有很多其他选择,但这些可能是最明显和最容易实现的。我很确定Java中有用于生成随机长数的本地工具。

于 2013-04-17T17:55:56.970 回答