Java Math.random()v/s random类
Java中的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
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