在Java中生成随机长值

时间:2015-04-21 08:32:31

标签: java random random-sample

我正在尝试使用以下代码在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中运行一样,我得到两个相同的数字。为什么会这样? 你能建议一个更好的方法来产生长值吗?

2 个答案:

答案 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版本......

此致