0

我目前正在学习 Java 并正在学习 while 循环。如何使用 random() 方法生成随机负数?另外,如何使程序打印出仅在某个范围内的值?例如,假设 Java 选择 10 个随机数,我怎样才能让它只显示 0.6 和 0.8 之间的数字?

 double randomNumber;
    int counter = 0;

    while(counter <= 99)
    {
        randomNumber = Math.random();
        System.out.println(randomNumber);
         counter++;
4

3 回答 3

4

Math.random()给你一个介于 0.0(含)和 1.0(不包括)之间的数字,因此获取其他范围的传统方法是乘以范围的宽度并将范围的底部添加到它。因此:

Math.random() * 0.2 + 0.6

会给你[0.6,0.8)的东西。

于 2012-12-23T01:01:00.597 回答
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
}
于 2012-12-23T01:03:21.907 回答
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);
}
于 2012-12-23T01:00:39.757 回答