有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我要找的是这样的东西:

NAMEOFMETHOD (min, max) 

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

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


这里怎么了


共 (6) 个答案

  1. # 1 楼答案

    public static int random_int(int Min, int Max)
    {
         return (int) (Math.random()*(Max-Min))+Min;
    }
    
    random_int(5, 9); // For example
    
  2. # 2 楼答案

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

  3. # 3 楼答案

    <> P>因为当{{CD2}}为负时,上面的解决方案不考虑做{^ }的可能溢出,这里另一个解决方案(类似于凯鲁亚克的一个)

    public static int getRandom(int min, int max) {
        if (min > max) {
            throw new IllegalArgumentException("Min " + min + " greater than max " + max);
        }      
        return (int) ( (long) min + Math.random() * ((long)max - min + 1));
    }
    

    即使您将其称为:

    getRandom(Integer.MIN_VALUE, Integer.MAX_VALUE) 
    
  4. # 4 楼答案

    使用Random类是公认答案中建议的方法,但如果您不想创建新的Random对象,这里有一种不那么直截了当的正确方法:

    min + (int) (Math.random() * (max - min + 1));
    
  5. # 5 楼答案

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

    Random random = new Random();
    

    然后使用Random.nextInt(int)

    int randomNumber = random.nextInt(max + 1 - min) + min;
    

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

  6. # 6 楼答案

    使用Java 7或更高版本,您可以使用

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

    Javadoc:ThreadLocalRandom.nextInt