如何在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)