我目前正在学习Java和学习循环。我怎么能用random()方法生成随机负数?另外,如何使程序打印出的值仅在一定范围内?例如,假设Java选择10个随机数,我怎么能这样做它只显示0.6到0.8之间的数字?
double randomNumber;
int counter = 0;
while(counter <= 99)
{
randomNumber = Math.random();
System.out.println(randomNumber);
counter++;
答案 0 :(得分:4)
Math.random()
为您提供0.0(含)和1.0之间的数字,因此获得其他范围的传统方法是乘以范围的宽度并将范围的底部添加到其中。因此:
Math.random() * 0.2 + 0.6
会给你一些[0.6,0.8)。
答案 1 :(得分:3)
要获取该范围内的随机数:
double r = Math.random(); // -> [0, 1)
r = r * 0.2; // scale -> [0, 0.2)
r = r + 0.6; // translate -> [0.6, 0.8)
(可以进行类似的数学运算来创建负数或映射到任意范围。)
如果某个数字已经在该范围内,则“只做某事”:
double r = Math.random(); // -> [0, 1)
if (r >= 0.6 && r < 0.8) {
// r -> [0.6, 0.8)
} else {
// r -> not in above range
}
答案 2 :(得分:1)
不确定您是仅需要负数还是合并。仅限否定,只需乘以-1.0d
:
double random = Math.random() * -1.0f; // range ]-1, 0]
对于组合,正面和负面,请使用:
double random = 2.0d * (Math.random() - 0.5d); // range [-1, 1[
对于第二个问题,请使用简单的if:
double random = 2.0d * (Math.random() - 0.5d);
if (0.6d < random && random < 0.8d)
{
System.out.println(random);
}