int num = 10;
Random rand = new Random();
int ran = rand.nextInt(num);
if (ran==0){
ran= ran+1;
}
System.out.println("random : "+ran);
这是我目前编写的代码,有没有更好的方法来实现这个功能?当随机数为0时,我觉得这是一种硬编码的方式,因此我增加了1。
nextInt()
返回0或1时,你得到的有效结果是1)。int rnd = rand.nextInt(num - 1) + 1;
maxValue
真的是您将获得的最高数字,则 -1
是错误的,因为 nextInt(10)
返回范围在 0..9
的数字。因此我修改了答案。 - VlasecnextInt
的参数是一个排除边界,所以如果你想要1到10的数字,那么需要使用nextInt(10) + 1
。 - Joachim Sauer我猜您正在尝试获得1到'num'之间的随机数。
一种更通用的方法可以是:
int Low = 1;
int High = 10;
int R = r.nextInt(High-Low) + Low;
这将会给你一个1(包含)到10(不包含)之间的随机数。(或者使用High=11来得到10包含在内的随机数)
Random random = new Random();
int ran = random.nextInt(9) + 1; //10 is maxRandom value for this code. 1-10
random.nextInt(maxValue)+1
中的maxValue
设置了一个从0到maxValue
的范围。因此,如果maxValue
等于9,则您的最大整数将为10。 - Petr Shypilaint randomNumber = 0;
do {
randomNumber = rand.nextInt(maxValue);
} while(randomNumber == 0);
试试这个:
int num,max=10,min=1;
Random r=new Random();
num=r.nextInt(max-min)+1;
import java.util.Random;
只需将下限(num变量)减1,并将ran变量加1即可。
int num = 10;
Random rand = new Random();
int ran = rand.nextInt(num - 1) + 1;
// or decrease num first n-- and then int ran = rand.nextInt(num) + 1
现在的限制(上限)是8(包括),例如,最终数字总是不包括的。如果它变成0,它会增加到1,如果它变成8,它会增加到9,这原本应该是上限。
不要期望从Random
中获得这种功能,你应该自己实现。可以通过结果做很多事情 - 乘法、加法(例如,对于随机奇数,使用2*nextInt(n)+1
),使用对数刻度来计算音符频率,使用映射或枚举来获取随机对象...
nextInt(n)
方法只是为了给你n
个不同的值(从0
到n-1
)。不要对它有更多的期望,自己实现剩下的部分。如果我理解你的问题正确,你需要数字1..9
,所以你应该请求nextInt(9)+1
来获取0..8
,然后再加上1
。
希望这个解释能够帮助你,我看到了很多答案,但我没有喜欢任何一个解释。
尝试:
int num = 10;
Random rand = new Random();
int ran = rand.nextInt(num) + 1;
0
,那么你会将随机数增加1
,但不会打印出该值。此外,在你的示例中,数字1
出现的可能性是其他任何数字的两倍。 - Kevin Brydon