Random()方法的理解
啥也不说先来个实例1:
但很多人看到输出结果时会很纳闷、、、、。不要急听我慢慢道来。首先来看输出结果:
length of a = 13
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
package com.day1.first;
import java.util.Arrays;
import java.util.Random;
public class ArraysNew {
public static void main(String[] args) {
int[] a;//定义了一个数组a
Random random = new Random(10);//创建Random实例,使用单个 long 种子创建一个新的随机数生成器。这里指定了种子有什么作用呢?请看下一个实例2,输出结果惊人的相似。
a = new int[random.nextInt(20)];
System.out.println("length of a = "+a.length);
System.out.println(Arrays.toString(a));
}
}
很多人会问:1、为甚数组a的长度会是:13?
因为在创建随机生成器时设置了一个种子,并且random.nextInt(20)中的20是随机数的上限,产生的随机数为0-20的整数,不 包括20。
2、为什么数组里边的值全部都是0?
数组原数中的基本数据类型值会自动初始化成空值(对于数字和字符就是0;对于布尔型就是false)。
3、为什么Random(10)方法里边会有一个10的参数?
当我们把这三个问题弄明白了Random()方法也就知道的8,9不离10了。
我们来一一作答,
首先看源程序
实例2
public class TestRandom {
public static void main(String[] args) { // 案例2 // 对于种子相同的Random对象,生成的随机数序列是一样的。
Random ran1 = new Random(10);
System.out.println("使用种子为10的Random对象生成[0,10)内随机整数序列: ");
for (int i = 0; i < 10; i++) {
System.out.print(ran1.nextInt(10) + " ");
}
}
System.out.println();
Random ran2 = new Random(10);
System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: ");
for (int i = 0; i < 10; i++) {
System.out.print(ran2.nextInt(10) + " ");
}
}
输出结果:
使用种子为10的Random对象生成[0,10)内随机整数序列:
3 0 3 0 6 6 7 8 1 4
使用另一个种子为10的Random对象生成[0,10)内随机整数序列:
3 0 3 0 6 6 7 8 1 4