Random类随机数和Math.random随机数
Random.nextInt()随机数概述
Random类用于生成伪随机数流,Random类使用 48 位的种子,使用线性同余公式 (linear congruential form) 对其进行了修改
如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列
举例
描述:通过Random.nextInt()方法产生一组范围在 1-100 的随机数
public class RandomNextInt {
public static void main(String[] args) {
Random ran = new Random();
for (int i = 0; i < 10; i++) {
int num = ran.nextInt(100) + 1;
System.out.print(num + " ");
}
}
}
Math.random()随机数概述
其实Math.random就是先创建一个伪随机数生成器,之后所产生的随机数都是通过这个伪随机数生成器产生的,其实和Random.nextInt()的效果是一样的
注意:此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。
举例
描述:描述:通过Math.random()方法产生一组范围在 1-100 的随机数
public class MathRandom {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int num = (int)(Math.random()*100+1);
System.out.print(num + " ");
//因为Math.random()产生的随机数在0.0到1.0之间(不包括1.0),所以我们要把数据类型进行强转
}
}
}
Random.nextInt() 和 Math.random()的区别
相同点:产生随机数的本质是差不多的
不同点:Math.random() 为 java.lang.Math 类中的静态方法;Random.nextInt() 为 java.util.Random类中的方法