15

可能重复:
Java:0 <= x < n 范围内的随机长数

我想在一个区间内生成一个随机长值,但似乎 Random 类 nextLong() 不接受像 nextInt() 这样的参数。我可以在这里做什么?

4

2 回答 2

27

如果您想要基于范围的长值,请执行以下操作:

 long LOWER_RANGE = 0; //assign lower range value
 long UPPER_RANGE = 1000000; //assign upper range value
 Random random = new Random();


 long randomValue = LOWER_RANGE + 
                           (long)(random.nextDouble()*(UPPER_RANGE - LOWER_RANGE));
于 2012-12-05T14:33:39.310 回答
2

您可以使用 nextInt 生成更高和更低的长整数。甚至可以使用您自己的 nextLong 方法扩展 Random 类(即使对于更严肃的编程来说,组合可能是更安全的选择)。

看一下 nextInt(int n) 的 Javadoc。可以使用相同的算法实现 nextLong 方法。把它做好可能会有点棘手。准备用笔和纸做一些数学运算。如果您不只是为了好玩而编写代码,那么使用经过验证的库是明智的。

于 2012-12-05T17:27:49.353 回答