Math.random() v/s Random 类

dry*_*hip 1 java random

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

我的问题是,如果我想获得一个范围内的随机数(比如 30-70),那么我应该走哪条路?考虑的因素是速度随机性

Era*_*ran 5

如果您查看 的实现Math.random(),您会发现它使用了该类的实例Random

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

private static final class RandomNumberGeneratorHolder {
    static final Random randomNumberGenerator = new Random();
}
Run Code Online (Sandbox Code Playgroud)

因此随机性是相同的。

也就是说,由于您需要 anint而不是 a double,所以您最好使用nextInt该类的方法,因为它可以节省您将aRandom转换为乘法和转换的操作。doubleint

Random rnd = new Random();
int num = rnd.nextInt(41)+30;
Run Code Online (Sandbox Code Playgroud)