一、生成随机数组
- java.util.Random
public int[] randomByRandom(int randomLength) {
int[] insertRandomList = new int[randomLength];
Random r = new Random(); // 若给定seed种子值,则生成的随机数恒为一样。是伪随机方法。
for (int i = 0; i < randomLength; i++) {
insertRandomList[i] = r.nextInt();
System.out.println(insertRandomList[i]);
}
return insertRandomList;
}
- Math
Math的静态方法random()返回一个 [0, 1)的随机double类型随机数
若要求[100, 150)的随机数,就需要Math.random()*(最大值 - 最小值)+最小值
也就是乘以50再加上100再转换为int类型。
为什么是 Math.random()*(最大值 - 最小值)+最小值呢,其实就是一道中学的数学题:
已知 x∈[0, 1) y是x的正比例函数 求y的表达式 很容易求得y=50x+100
但是有的博主都写的是 Math.random()*(最大值-最小值+1)+最小值呢?
我是这么理解的,因为Math.random()*(最大值 - 最小值)+最小值这里的随机数是不会包含最大值的,右边的是圆括号")" 不包含的意思。
而x∈[0, 1) 这就导致了无穷大乘以x和无穷大+1再乘以x都只相差1
所以很多博主就把x的斜率那里加了个1, 后面取整的时候就可以取到最大值了。这样他们的范围y就是[最小, 最大] 而我的是[最小, 最大)
其实这里把我的公式里的截距加个1也是一样的效果。
public int[] randomByMath(int randomLength) {
int[] insertRandomList = new int[randomLength];
for (int i = 0; i < randomLength; i++) {
double randomBase = Math.random()