如何在java中生成min和max之间的随机整数?

Dav*_*vid 40 java random

什么方法在min和max之间返回一个随机int?或者不存在这样的方法?

我正在寻找的是这样的:

NAMEOFMETHOD (min, max) 
Run Code Online (Sandbox Code Playgroud)

(其中min和max是ints)

返回像这样的东西:

8
Run Code Online (Sandbox Code Playgroud)

(随机)

如果确实存在这样的方法,请与您的答案链接到相关文档.谢谢.

更新:尝试在nextInt答案中实现完整的解决方案我有这个:

class TestR
{
    public static void main (String[]arg) 
    {   
        Random random = new Random() ;
        int randomNumber = random.nextInt(5) + 2;
        System.out.println (randomNumber) ; 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

我仍然从编译器得到相同的错误:

TestR.java:5: cannot find symbol
symbol  : class Random
location: class TestR
        Random random = new Random() ;
        ^
TestR.java:5: cannot find symbol
symbol  : class Random
location: class TestR
        Random random = new Random() ;
                            ^
TestR.java:6: operator + cannot be applied to Random.nextInt,int
        int randomNumber = random.nextInt(5) + 2;
                                         ^
TestR.java:6: incompatible types
found   : <nulltype>
required: int
        int randomNumber = random.nextInt(5) + 2;
                                             ^
4 errors
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?

Mar*_*ers 124

在应用程序启动时构造一个Random对象:

Random random = new Random();
Run Code Online (Sandbox Code Playgroud)

然后使用Random.nextInt(int):

int randomNumber = random.nextInt(max + 1 - min) + min;
Run Code Online (Sandbox Code Playgroud)

请注意,下限和上限都包括在内.

  • 你缺少`import java.util.Random;`. (4认同)
  • 大卫,你需要先实例化它.`随机随机=新的随机();`它仍然只是*Java代码.没有神奇的手段;) (2认同)
  • 并确保只实例化Random对象一次并重用它.不要为每次调用函数创建一个新的Random对象. (2认同)

MAK*_*MAK 17

您可以使用Random.nextInt(n).这会在[0,n)中返回一个随机int.只需使用max-min + 1代替n并将min添加到答案中,就会得到所需范围内的值.


小智 5

public static int random_int(int Min, int Max)
{
     return (int) (Math.random()*(Max-Min))+Min;
}

random_int(5, 9); // For example
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此答案中包含下限,但不包含上限。如果您希望两者都包含使用: return (int) (Math.random()*(Max-Min + 1))+Min; (2认同)