Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这两个随机值有何不同?_Java - Fatal编程技术网

Java 这两个随机值有何不同?

Java 这两个随机值有何不同?,java,Java,两者之间有区别吗 int number=(int)(Math.random()*1000); 及 int number=(int)(100+Math.random()*900); 要生成一个3位随机数?第二个表达式保证生成一个3位随机数,但第一个表达式不能保证。第一个表达式可以生成从0到999的任意整数 您还可以生成3位随机整数,如下所示: import java.util.Random; public class Main { public static void main(St

两者之间有区别吗

int number=(int)(Math.random()*1000);

int number=(int)(100+Math.random()*900);

要生成一个3位随机数?

第二个表达式保证生成一个3位随机数,但第一个表达式不能保证。第一个表达式可以生成从
0
999
的任意整数

您还可以生成3位随机整数,如下所示:

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random random = new Random();
        int number = random.nextInt(900) + 100;
        System.out.println(number);
    }
}

第二个表达式保证生成一个3位随机数,但第一个表达式不能保证。第一个表达式可以生成从
0
999
的任意整数

您还可以生成3位随机整数,如下所示:

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random random = new Random();
        int number = random.nextInt(900) + 100;
        System.out.println(number);
    }
}
Math.random()来自:

返回带正号的双精度值,大于或等于0.0且小于1.0。返回值是从该范围内以(近似)均匀分布伪随机选择的

例如:

//生成随机数
double rand=Math.random();
//每次执行此代码时,输出都不同
System.out.println(“随机数:+rand”);
//伪随机输出:0.5568515217910215
就你而言:

  • 整数=(int)(Math.random()*1000);返回介于
    0
    -
    999
  • 整数=(整数)(100+Math.random()*900);返回介于
    100
    -
    999
来自JavaAPI的更多信息

当第一次调用此方法时,它会创建一个新的伪随机数生成器,就像表达式一样 新java.util.Random() 此后,这个新的伪随机数生成器将用于此方法的所有调用,并且不会在其他任何地方使用

此方法正确地同步,以允许多个线程正确使用。但是,如果许多线程需要以很快的速度生成伪随机数,则可以减少每个线程拥有自己的伪随机数生成器的争用

因此,底线是:

random()返回大于或等于0.0且小于1.0的伪随机双精度

在这类问题中,您应该访问JavaAPI。希望有帮助

Math.random()来自:

返回带正号的双精度值,大于或等于0.0且小于1.0。返回值是从该范围内以(近似)均匀分布伪随机选择的

例如:

//生成随机数
double rand=Math.random();
//每次执行此代码时,输出都不同
System.out.println(“随机数:+rand”);
//伪随机输出:0.5568515217910215
就你而言:

  • 整数=(int)(Math.random()*1000);返回介于
    0
    -
    999
  • 整数=(整数)(100+Math.random()*900);返回介于
    100
    -
    999
来自JavaAPI的更多信息

当第一次调用此方法时,它会创建一个新的伪随机数生成器,就像表达式一样 新java.util.Random() 此后,这个新的伪随机数生成器将用于此方法的所有调用,并且不会在其他任何地方使用

此方法正确地同步,以允许多个线程正确使用。但是,如果许多线程需要以很快的速度生成伪随机数,则可以减少每个线程拥有自己的伪随机数生成器的争用

因此,底线是:

random()返回大于或等于0.0且小于1.0的伪随机双精度


在这类问题中,您应该访问JavaAPI。希望有帮助

有巨大的差异,
(int)(Math.random()*1000)
从0-999生成有巨大的差异,
(int)(Math.random()*1000)
从0-999I生成。所以第一个语句是0-999,但是第二个语句是100-999之间的任何数字??正确…这就是我在回答中提到的。我明白了。所以第一个语句是0-999,但是第二个语句是100-999之间的任何数字??正确…这就是我在回答中提到的。