我正在尝试使用以下代码在Java中生成两个9位长的随机长值:
for (int i =0;i<2;i++) {
String axisIdStr = Long.toString((long)(System.nanoTime() * (Math.random() * 1000)));
System.out.println("@@@@@@@@ axisIdStr "+axisIdStr);
String axId = axisIdStr.substring((axisIdStr.length() -9), axisIdStr.length()) ;
}
但是当我在Windows中运行它时,我会得到两个不同的数字,就像在mac中运行一样,我得到两个相同的数字。为什么会这样? 你能建议一个更好的方法来产生长值吗?
答案 0 :(得分:1)
根据您的要求,您需要生成9位数的随机数。正如评论建议你可以使用random.Below我刚刚给出了一个解决方案来生成两个数字之间的随机数。
long lowerLimit = 123456712L;
long upperLimit = 234567892L;
Random r = new Random();
long number = lowerLimit+((long)(r.nextDouble()*(upperLimit-lowerLimit)));
答案 1 :(得分:0)
你可以创建一个大小为9的int的数组[],并用随机整数0-9填充。然后将数组加起来相乘。
a[8]*1 + a[7]*10 + a[6]*100 ...
您需要确保[0]只需要数字1-9 tho ...
为了获得更多的随机序列,你理想情况下应该使用字符串,然后你可以在随机“字符串”的起始位置得到0,它不会是一个数字。
或者可能生成一些伪随机并从中删除最后9位数。
这是你可以用已经存在的东西完成的DIY版本......
此致