我想在java中随机创建16位数字。我可以用 String 来做,然后转换为 Long。还有其他选择吗?
谢谢!
您可以使用 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()));
如果您绝对需要 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
如果需要的话使用。
您想要 16 位数字的原因可能是这里的关键。
如果您只想要一个可能与最大 16 位数字一样大的数字,请使用您喜欢的随机数生成器生成介于0
和之间的随机数9 999 999 999 999 999
。如果这是原因,您可以根据需要添加前导零以准确显示 16 个字符。
如果您明确希望有 16 个十进制数字并且第一个不能为零,则可以尝试使用999 999 999 999 999
as 上限进行相同的练习,并在前面添加一个从 1 到 9 的随机数字(将其乘以千万亿然后与另一个随机数,如果需要的话)。
还有很多其他选择,但这些可能是最明显和最容易实现的。我很确定Java中有用于生成随机长数的本地工具。