如何在Java中生成最小值和最大值之间的随机整数?

如何在Java中生成最小值和最大值之间的随机整数?,java,random,Java,Random,什么方法返回最小值和最大值之间的随机整数?或者根本不存在这样的方法 我要找的是这样的东西: NAMEOFMETHOD (min, max) 8 (其中min和max是ints),返回如下内容: NAMEOFMETHOD (min, max) 8 (随机) 如果确实存在这种方法,请将答案链接到相关文档 谢谢 更新 尝试实施完整解决方案时,我收到以下错误消息: class TestR { public static void main (String[]arg) {

什么方法返回最小值和最大值之间的随机整数?或者根本不存在这样的方法

我要找的是这样的东西:

NAMEOFMETHOD (min, max) 
8
(其中min和max是
int
s),返回如下内容:

NAMEOFMETHOD (min, max) 
8
(随机)

如果确实存在这种方法,请将答案链接到相关文档

谢谢


更新 尝试实施完整解决方案时,我收到以下错误消息:

class TestR
{
    public static void main (String[]arg) 
    {   
        Random random = new Random() ;
        int randomNumber = random.nextInt(5) + 2;
        System.out.println (randomNumber) ; 
    } 
} 
我仍然从编译器中得到相同的错误:

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
TestR.java:5:找不到符号
符号:随机类
位置:类TestR
随机=新随机();
^
java:5:找不到符号
符号:随机类
位置:类TestR
随机=新随机();
^
java:6:operator+不能应用于Random.nextInt,int
int randomNumber=random.nextInt(5)+2;
^
java:6:不兼容的类型
发现:
必填项:int
int randomNumber=random.nextInt(5)+2;
^
4个错误


这里怎么了

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

Random random = new Random();
然后使用:


请注意,下限和上限都包含在内。

您可以使用。这将返回[0,n]中的一个随机整数。只需使用max-min+1代替n,并将min添加到答案中,即可得到所需范围内的值。

import java.util.random;

这将生成大小为psize的随机整数

public static Integer getRandom(Integer pSize) {

    if(pSize<=0) {
        return null;
    }
    Double min_d = Math.pow(10, pSize.doubleValue()-1D);
    Double max_d = (Math.pow(10, (pSize).doubleValue()))-1D;
    int min = min_d.intValue();
    int max = max_d.intValue();
    return RAND.nextInt(max-min) + min;
}
public静态整数getRandom(整数pSize){

if(pSize使用随机类是公认答案中建议的方法,但如果您不想创建新的随机对象,这里有一种不太直接的正确方法:

min + (int) (Math.random() * (max - min + 1));

<> P>以上解决方案不考虑“<代码> max min <代码>的可能溢出,当<代码> min <代码>为负时,这里另一个解决方案(类似于凯鲁亚克的一个)

即使您将其称为:

getRandom(Integer.MIN_VALUE, Integer.MAX_VALUE) 

使用Java7或更高版本,您可以使用

ThreadLocalRandom.current().nextInt(int origin, int bound)

Javadoc:

我用我尝试这样做时出现的错误更新了这个问题。出了什么问题?大卫,你需要先实例化它。
Random=new Random();
它仍然只是Java代码。没有魔法;)并确保只实例化一次随机对象并重用它。不要为每次函数调用创建新的随机对象。您缺少
import java.util.Random;
@ataulm:在旧版本的java中,创建多个随机对象并不能保证随机性。“在同一毫秒内创建的两个随机对象将具有相同的随机数序列。”().在较新的版本中,这可能还可以,但我在三年前写评论时不知道。我用尝试这样做时出现的错误更新了问题。出了什么问题?您是否忘记声明
random
并为其分配
java.util.random
的新实例?您能解释一下如何做吗?您是否已决定lare import语句for java.util.Random这似乎是一种复杂的实现方法,可以在一行代码中完成。请在将来使用代码格式。您的算法是随机x*正数+正数。这怎么可能总是导致最大值和最小值之间的数字?随机值介于0和1之间。进行数学运算。请注意在这个答案中,下限是包含的,但上限是独占的。如果您希望两者都包含,请使用:return(int)(Math.random()*(Max-Min+1))+Min;
ThreadLocalRandom.current().nextInt(int origin, int bound)