private Random random = new Random(47);
尽管作者很喜欢47 但是这里也不能填上47 因为如果填写47的话,就不是随机数了,尽管看起来是随机的,可是当你再次运行的时候,发现还是这一列数字, 我的每次运行都是
lazy quick brown dog this this quick jumped over brown brown 这几个数字 ,原因是 创建随机数的构造方法有无参和带有参数的,带有参数的例如47 是随机种子,详情可以参考 http://www.cnblogs.com/ningvsban/p/3590722.html 这篇blog 不带参数 以当前时间作为种子 每次运行当前时间肯定是不相同的
大概内容就是 种子相同,结果也就相同,种子不同,得出的结果也就不同
所以应该改成这样
public class RandomList<T> {
private ArrayList<T> storage = new ArrayList<T>();
// 47 是一个种子 对于种子相同的Random对象,生成的随机数序列是一样的
// private Random random = new Random(47); 尽管作者很喜欢47 但是这里也不能填上47 因为如果填写47的话,就不是随机数了
private Random random = new Random();
public void add(T item) {
storage.add(item);
}
public T select() {
return storage.get(random.nextInt(storage.size()));
}
public static void main(String[] args) {
RandomList<String> rs = new RandomList<String>();
for (String s : "this quick brown fox jumped over this lazy brown dog".split(" ")) {
rs.add(s);
}
for (int i = 0; i < 11; i++) {
System.out.print(rs.select() + " ");
}
}
}