Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 Math.random()v/s random类_Java_Random - Fatal编程技术网

Java Math.random()v/s random类

Java Math.random()v/s random类,java,random,Java,Random,Java中的Math类有一个方法,Math.random(),它返回一个介于0和1之间的伪随机数。 还有一个类java.util.Random,它有多种方法,如nextlink(),nextFloat(),nextDouble(),nextLong()等 我的问题是,如果我想得到一个范围内的随机数(比如30-70),那么我应该走哪条路?正在考虑的因素是速度和随机性。如果您查看Math.random()的实现,您会发现它使用了random类的一个实例: public static double r

Java中的
Math
类有一个方法,
Math.random()
,它返回一个介于0和1之间的伪随机数。
还有一个类
java.util.Random
,它有多种方法,如
nextlink()
nextFloat()
nextDouble()
nextLong()


我的问题是,如果我想得到一个范围内的随机数(比如30-70),那么我应该走哪条路?正在考虑的因素是速度和随机性。如果您查看
Math.random()
的实现,您会发现它使用了
random
类的一个实例:

public static double random() {
    return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}

private static final class RandomNumberGeneratorHolder {
    static final Random randomNumberGenerator = new Random();
}
因此,随机性是相同的

这就是说,由于您需要的是
int
而不是
double
,因此最好使用
Random
类的
nextInt
方法,因为这样可以避免将
double
乘以
int

Random rnd = new Random();
int num = rnd.nextInt(41)+30;

如果查看
Math.random()
的实现,您将看到它使用了
random
类的一个实例:

public static double random() {
    return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}

private static final class RandomNumberGeneratorHolder {
    static final Random randomNumberGenerator = new Random();
}
因此,随机性是相同的

这就是说,由于您需要的是
int
而不是
double
,因此最好使用
Random
类的
nextInt
方法,因为这样可以避免将
double
乘以
int

Random rnd = new Random();
int num = rnd.nextInt(41)+30;
Math.random()确实依赖于random类。根据您使用的案例和数据类型,您可以使用以下两种方法之一。对于
int
Random.nextInt()可能是最佳选择

说到随机性,更安全的随机类是SecureRandom。与Random不同,SecureRandom不依赖于系统时间,因此,如果应用程序具有安全元素,则一定要使用SecureRandom。方法名称相同,但

SecureRandom SecureRandom=new SecureRandom()
代替

Random Random=new Random()

数学。Random()确实依赖于Random类。根据您使用的案例和数据类型,您可以使用以下两种方法之一。对于
int
Random.nextInt()可能是最佳选择

说到随机性,更安全的随机类是SecureRandom。与Random不同,SecureRandom不依赖于系统时间,因此,如果应用程序具有安全元素,则一定要使用SecureRandom。方法名称相同,但

SecureRandom SecureRandom=new SecureRandom()
代替


Random Random=new Random()

我个人会选择Random类,因为在我看来,它更容易使用,也更容易影响参数,例如对于30-79之间的随机数

Random r=new Random();int i=r.nextInt(40)+30


我希望这至少对我个人使用random类有所帮助,因为在我看来,使用random类和使用参数(例如30-79之间的随机数)更容易,也更容易产生影响

Random r=new Random();int i=r.nextInt(40)+30


我希望这至少有点帮助

哪个包位于
SecureRandom
位置?@PriydarshiSingh java.security.SecureRandom哪个包位于
SecureRandom
位置?@PriydarshiSingh java.security.SecureRandom