Math.random() 伪随机生成并返回一个从0.0d(包括)到1.0d(不包括), 双精度小数
new Random().nextInt(指定值); 伪随机生成并返回一个 在0(包括)和指定值(不包括)之间均匀分布的整型值, 另: 随机数种子会使得取值变得有规律
在项目中发现了2种写法
方式1:
int code = (int)((Math.random() * 9 + 1) * 100000);
方式2:
int code = new Random().nextInt(max) + max;
方式1:
代入一种情况: 0.01*9=0.09+1=1.09 0.9*9=8.1+1=9.1 范围是从 1.0~9.9 如果没有特殊要求也能使用了
方式2:
由于max限定了最大值, 如果max为100,则code 永远是123 145这种 1开头的数字, 从生成范围内随机数的角度上来说这样写是有问题的
public static int generateNumber(int length) {
int max= 1;
for(int i = 1; i < length; ++i) {
max*= 10;
}
return new Random().nextInt(max) + max;
}
如果要实现的是 从范围 5(包含)-10(包含), 6个数字的随机获取, 可以用下面的写法
public static int getRandomNum(int min, int max){
return new Random().nextInt(max-min+1) + min;
}