我想在java中创建16位数的randomally数字。 我可以使用String,然后转换为Long。 还有其他选择吗?
谢谢!
答案 0 :(得分:4)
您可以使用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()));
答案 1 :(得分: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循环中有一个off-by-one,如果需要,可以使用i < 16
。
答案 2 :(得分:2)
你想要16位数的原因可能是关键。
如果您只想要一个可能与最大16位数字一样大的数字,那么请使用您喜欢的随机数生成器生成0
和9 999 999 999 999 999
之间的随机数。然后,您可以根据需要添加前导零,以显示正好16个字符,如果这是原因。
如果您明确希望有16个十进制数字且第一个不能为零,则可以尝试使用999 999 999 999 999
作为上限进行相同的练习,并在前面添加1到9的随机数字(乘以它是一个千万亿,然后与另一个随机数相加,如果需要的话)。
还有很多其他选择,但这些选项可能是最明显和最容易实现的。我很确定Java中存在用于生成随机长数的本机设施。