答案 0 :(得分:3)
如果你想要x(包括)和y(不包括)之间的随机整数,这就是你要做的:
int yourRandomNumber = new Random().nextInt(y-x) + x;
示例:如果您想随机选择[4,5,6,7],您将执行以下操作:
int yourRandomNumber = new Random().nextInt(4 /* i.e. 8-4 */) + 4;
答案 1 :(得分:1)
有什么难以理解的?有几种方法可以生成几乎所有类型的随机数...你想要的那个可能就是:
int nextInt(int n)
从此随机数生成器的序列中返回一个伪随机,均匀分布的int值,介于0(包括)和指定值(不包括)之间。
编辑:你问这个功能是如何运作的。这也在函数的javadoc中解释。如果你对细节更感兴趣,你应该得到文档中引用的D. Knuth书(来自http://download.oracle.com/javase/1.4.2/docs/api/java/util/Random.html):
此类的实例用于生成伪随机数流。该类使用48位种子,使用线性同余公式进行修改。 (参见Donald Knuth,“计算机程序设计的艺术”,第2卷,第3.2.1节。)
如果使用相同的种子创建了两个Random实例,并且为每个实例创建了相同的方法调用序列,则它们将生成并返回相同的数字序列。为了保证此属性,为Random类指定了特定的算法。为了Java代码的绝对可移植性,Java实现必须使用此处显示的所有算法用于Random类。但是,Random类的子类允许使用其他算法,只要它们符合所有方法的一般合同。
Random类实现的算法使用受保护的实用程序方法,该方法在每次调用时最多可提供32个伪随机生成的位。
许多应用程序会发现Math类中的随机方法更易于使用。